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

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_rolesObject



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

#rolesObject



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