Module: SkillTree::Subject::InstanceMethods
- Defined in:
- lib/skill_tree/subject.rb
Class Method Summary collapse
Instance Method Summary collapse
- #can?(action, resource) ⇒ Boolean (also: #allowed_to?)
- #role!(role, resource) ⇒ Object
- #role?(role_name, resource) ⇒ Boolean (also: #has_role?)
- #unrole!(role, resource) ⇒ Object
Class Method Details
.included(base) ⇒ Object
9 10 11 12 13 14 |
# File 'lib/skill_tree/subject.rb', line 9 def self.included(base) base.send :has_many, :user_roles, class_name: 'SkillTree::Models::UserRole' base.send :has_many, :roles, through: :user_roles, class_name: 'SkillTree::Models::Role' end |
Instance Method Details
#can?(action, resource) ⇒ Boolean Also known as: allowed_to?
16 17 18 19 |
# File 'lib/skill_tree/subject.rb', line 16 def can?(action, resource) resource.(action) || permitted_with_role?(action, resource) end |
#role!(role, resource) ⇒ Object
28 29 30 31 32 |
# File 'lib/skill_tree/subject.rb', line 28 def role!(role, resource) role = SkillTree::Models::Role.find_by_name!(role) user_role = user_roles.find_or_initialize_by(resource: resource) user_role.update!(role: role) end |
#role?(role_name, resource) ⇒ Boolean Also known as: has_role?
22 23 24 25 26 |
# File 'lib/skill_tree/subject.rb', line 22 def role?(role_name, resource) user_roles.joins(:role) .where(roles: { name: role_name.to_s }) .where(resource: resource).any? end |
#unrole!(role, resource) ⇒ Object
34 35 36 37 38 |
# File 'lib/skill_tree/subject.rb', line 34 def unrole!(role, resource) role = SkillTree::Models::Role.find_by_name!(role) active_roles = user_roles.where(role: role, resource: resource) active_roles.destroy_all end |