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

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_rolesObject



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

Returns:

  • (Boolean)


48
49
50
# File 'lib/roles_for_mm/strategies/roles_mask.rb', line 48

def role?(role)
  roles.include?(role.to_s)
end

#rolesObject



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