Module: DataMapper::RolesMask
- Defined in:
- lib/roles_for_dm/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
17 18 19 20 |
# File 'lib/roles_for_dm/strategies/roles_mask.rb', line 17 def self.included base base.extend ClassMethods base.property :roles_mask, Integer end |
Instance Method Details
#available_roles ⇒ Object
46 47 48 |
# File 'lib/roles_for_dm/strategies/roles_mask.rb', line 46 def available_roles self.class.available_roles end |
#calc_index(r) ⇒ Object
50 51 52 |
# File 'lib/roles_for_dm/strategies/roles_mask.rb', line 50 def calc_index(r) self.class.calc_index(r) end |
#role?(role) ⇒ Boolean
62 63 64 |
# File 'lib/roles_for_dm/strategies/roles_mask.rb', line 62 def role?(role) roles.include?(role.to_s) end |
#roles ⇒ Object
58 59 60 |
# File 'lib/roles_for_dm/strategies/roles_mask.rb', line 58 def roles self.available_roles.reject { |r| ((roles_mask || 0) & self.calc_index(r)).zero? } end |
#roles=(*roles) ⇒ Object
54 55 56 |
# File 'lib/roles_for_dm/strategies/roles_mask.rb', line 54 def roles=(*roles) self.roles_mask = (roles.flatten & available_roles).map { |r| calc_index(r) }.sum end |