Module: MongoMapper::RolesMask
- Defined in:
- lib/roles_for_mm/strategies/roles_mask.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #available_roles ⇒ Object
- #calc_index(r) ⇒ Object
- #role?(role) ⇒ Boolean
- #roles ⇒ Object
- #roles=(*roles) ⇒ Object
Class Method Details
.included(base) ⇒ Object
3 4 5 6 |
# File 'lib/roles_for_mm/strategies/roles_mask.rb', line 3 def self.included base base.extend ClassMethods base.key :roles_mask, Integer end |
Instance Method Details
#available_roles ⇒ Object
32 33 34 |
# File 'lib/roles_for_mm/strategies/roles_mask.rb', line 32 def available_roles self.class.available_roles end |
#calc_index(r) ⇒ Object
36 37 38 |
# File 'lib/roles_for_mm/strategies/roles_mask.rb', line 36 def calc_index(r) self.class.calc_index(r) end |
#role?(role) ⇒ Boolean
48 49 50 |
# File 'lib/roles_for_mm/strategies/roles_mask.rb', line 48 def role?(role) roles.include?(role.to_s) end |
#roles ⇒ Object
44 45 46 |
# File 'lib/roles_for_mm/strategies/roles_mask.rb', line 44 def roles self.available_roles.reject { |r| ((roles_mask || 0) & self.calc_index(r)).zero? } end |
#roles=(*roles) ⇒ Object
40 41 42 |
# File 'lib/roles_for_mm/strategies/roles_mask.rb', line 40 def roles=(*roles) self.roles_mask = (roles.flatten & available_roles).map { |r| calc_index(r) }.sum end |