Module: RoleMaking::Role

Defined in:
lib/role_making/role.rb

Instance Method Summary collapse

Instance Method Details

#add_role(role_name) ⇒ Object Also known as: grant



5
6
7
8
9
10
11
12
# File 'lib/role_making/role.rb', line 5

def add_role(role_name)
  role = self.roles.where(name: role_name).first
  unless role
    role = self.class.role_cname.constantize.where(name: role_name.to_s).first_or_initialize
    self.roles << role
  end
  role
end

#has_all_roles?(*args) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
27
28
# File 'lib/role_making/role.rb', line 24

def has_all_roles?(*args)
  args.all? do |item|
    self.has_role?(item)
  end
end

#has_any_role?(*args) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/role_making/role.rb', line 30

def has_any_role?(*args)
  args.any? { |r| self.has_role?(r) }
end

#has_role?(role_name) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
18
19
20
21
22
# File 'lib/role_making/role.rb', line 15

def has_role?(role_name)
  role_array = if new_record?
                 self.roles.detect { |r| r.name.to_s == role_name.to_s }
               else
                 self.roles.exists?( name: role_name)
               end
  !!role_array
end

#remove_role(roles_name) ⇒ Object Also known as: revoke



35
36
37
# File 'lib/role_making/role.rb', line 35

def remove_role(roles_name)
  self.roles.delete(self.class.role_cname.constantize.where(name: roles_name))
end

#roles_nameObject



41
42
43
# File 'lib/role_making/role.rb', line 41

def roles_name
  self.roles.select(:name).map { |r| r.name }
end