Module: Rabarber::HasRoles
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/rabarber/models/concerns/has_roles.rb
Class Method Summary collapse
Instance Method Summary collapse
- #assign_roles(*role_names, create_new: true) ⇒ Object
- #has_role?(*role_names) ⇒ Boolean
- #revoke_roles(*role_names) ⇒ Object
- #roles ⇒ Object
Class Method Details
.roleable_class ⇒ Object
56 57 58 |
# File 'lib/rabarber/models/concerns/has_roles.rb', line 56 def roleable_class @@included.constantize end |
Instance Method Details
#assign_roles(*role_names, create_new: true) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/rabarber/models/concerns/has_roles.rb', line 25 def assign_roles(*role_names, create_new: true) processed_role_names = process_role_names(role_names) create_new_roles(processed_role_names) if create_new roles_to_assign = Rabarber::Role.where(name: processed_role_names - .names) if roles_to_assign.any? delete_roleable_cache << roles_to_assign Rabarber::Audit::Events::RolesAssigned.trigger(self, roles_to_assign: roles_to_assign.names, current_roles: roles) end roles end |
#has_role?(*role_names) ⇒ Boolean
21 22 23 |
# File 'lib/rabarber/models/concerns/has_roles.rb', line 21 def has_role?(*role_names) roles.intersection(process_role_names(role_names)).any? end |
#revoke_roles(*role_names) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/rabarber/models/concerns/has_roles.rb', line 42 def revoke_roles(*role_names) processed_role_names = process_role_names(role_names) roles_to_revoke = Rabarber::Role.where(name: processed_role_names.intersection(roles)) if roles_to_revoke.any? delete_roleable_cache self. -= roles_to_revoke Rabarber::Audit::Events::RolesRevoked.trigger(self, roles_to_revoke: roles_to_revoke.names, current_roles: roles) end roles end |