Module: RoleModel::Implementation

Included in:
RoleModel
Defined in:
lib/role_model/implementation.rb

Instance Method Summary collapse

Instance Method Details

#has_all_roles?(*roles) ⇒ Boolean Also known as: is?, has_roles?

:call-seq:

has_all_roles?(:role)
has_all_roles?('role')
has_all_roles?(:role_1, ..., :role_n)
has_all_roles?('role_1', ..., 'role_n')
has_all_roles?([:role_1, ..., :role_n])
has_all_roles?(['role_1', ..., 'role_n'])

check if ALL of the given roles have been assigned this method is aliased as #is? and #has_roles?

Returns:

  • (Boolean)


30
31
32
# File 'lib/role_model/implementation.rb', line 30

def has_all_roles?(*roles)
  roles.flatten.map(&:to_sym).all? { |r| self.roles.include?(r) }
end

#has_any_role?(*roles) ⇒ Boolean Also known as: is_any_of?, has_role?

:call-seq:

has_any_role?(:role)
has_any_role?('role')
has_any_role?(:role_1, ..., :role_n)
has_any_role?('role_1', ..., 'role_n')
has_any_role?([:role_1, ..., :role_n])
has_any_role?(['role_1', ..., 'role_n'])

check if any (at least ONE) of the given roles have been assigned this method is aliased as #is_any_of? and #has_role?

Returns:

  • (Boolean)


46
47
48
# File 'lib/role_model/implementation.rb', line 46

def has_any_role?(*roles)
  roles.flatten.map(&:to_sym).any? { |r| self.roles.include?(r) }
end

#has_only_roles?(*roles) ⇒ Boolean Also known as: is_exactly?

:call-seq:

has_only_roles?(:role)
has_only_roles?('role')
has_only_roles?(:role_1, ..., :role_n)
has_only_roles?('role_1', ..., 'role_n')
has_only_roles?([:role_1, ..., :role_n])
has_only_roles?(['role_1', ..., 'role_n'])

check if ONLY of the given roles have been assigned this method is aliased as #is_exactly?

Returns:

  • (Boolean)


62
63
64
# File 'lib/role_model/implementation.rb', line 62

def has_only_roles?(*roles)
  self.send("#{self.class.roles_attribute_name}") == self.class.mask_for(*roles)
end

#role_symbolsObject

query assigned roles returning an Array for the declarative_authorization gem



16
17
18
# File 'lib/role_model/implementation.rb', line 16

def role_symbols
  roles.to_a
end

#rolesObject

query assigned roles



10
11
12
# File 'lib/role_model/implementation.rb', line 10

def roles
  Roles.new(self, self.class.valid_roles.reject { |r| ((self.send(self.class.roles_attribute_name) || 0) & 2**self.class.valid_roles.index(r)).zero? })
end

#roles=(*roles) ⇒ Object

assign roles



5
6
7
# File 'lib/role_model/implementation.rb', line 5

def roles=(*roles)
  self.send("#{self.class.roles_attribute_name}=", self.class.mask_for(*roles))
end