Module: Role::UserRoleHelper
- Extended by:
- ActiveSupport::Concern
- Included in:
- User
- Defined in:
- app/models/role/user_role_helper.rb
Overview
Provides the has_role method used to define a number of role helper methods
Instance Method Summary collapse
-
#grant_role(role_name, authorizable = nil) ⇒ Object
Grants a user the role_name, in cases like owner, authorizable should indicate the owned resource.
- #remove_role(role_name, authorizable = nil) ⇒ Object
-
#role?(role_name, authorizable = nil) ⇒ Boolean
Checks if the user has the role role_name, in cases like owner, authorizable should indicate the owned resource.
- #role_names ⇒ Object
Instance Method Details
#grant_role(role_name, authorizable = nil) ⇒ Object
Grants a user the role_name, in cases like owner, authorizable should indicate the owned resource
20 21 22 |
# File 'app/models/role/user_role_helper.rb', line 20 def grant_role(role_name, = nil) roles << Role.find_or_create_by!(name: role_name, authorizable: ) end |
#remove_role(role_name, authorizable = nil) ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'app/models/role/user_role_helper.rb', line 24 def remove_role(role_name, = nil) # In practice, we only expect to see one role here role = roles.named(role_name).() return unless role roles.destroy(role) role.each(&:destroy_if_empty) end |
#role?(role_name, authorizable = nil) ⇒ Boolean
Checks if the user has the role role_name, in cases like owner, authorizable should indicate the owned resource
10 11 12 13 14 15 16 |
# File 'app/models/role/user_role_helper.rb', line 10 def role?(role_name, = nil) if roles.loaded? roles.any? { |role| role.name == role_name.to_s && role.() } else roles.named(role_name).().exists? end end |
#role_names ⇒ Object
33 34 35 |
# File 'app/models/role/user_role_helper.rb', line 33 def role_names roles.uniq.pluck(:name) end |