Module: Acl9::ModelExtensions::Subject
- Defined in:
- lib/acl9/model_extensions/subject.rb
Instance Method Summary collapse
- #has_no_role!(role_name, object = nil) ⇒ Object
- #has_no_roles! ⇒ Object
- #has_no_roles_for!(object = nil) ⇒ Object
- #has_role!(role_name, object = nil) ⇒ Object
- #has_role?(role_name, object = nil) ⇒ Boolean
- #has_roles_for?(object) ⇒ Boolean (also: #has_role_for?)
- #roles_for(object) ⇒ Object
Instance Method Details
#has_no_role!(role_name, object = nil) ⇒ Object
30 31 32 |
# File 'lib/acl9/model_extensions/subject.rb', line 30 def has_no_role!(role_name, object = nil) delete_role(get_role(role_name, object)) end |
#has_no_roles! ⇒ Object
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/acl9/model_extensions/subject.rb', line 48 def has_no_roles! # for some reason simple # # self.roles.each { |role| delete_role(role) } # # doesn't work. seems like a bug in ActiveRecord self.roles.map(&:id).each do |role_id| delete_role self._auth_role_class.find(role_id) end end |
#has_no_roles_for!(object = nil) ⇒ Object
44 45 46 |
# File 'lib/acl9/model_extensions/subject.rb', line 44 def has_no_roles_for!(object = nil) roles_for(object).each { |role| delete_role(role) } end |
#has_role!(role_name, object = nil) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/acl9/model_extensions/subject.rb', line 14 def has_role!(role_name, object = nil) role = get_role(role_name, object) if role.nil? role_attrs = case object when Class then { :authorizable_type => object.to_s } when nil then {} else { :authorizable => object } end.merge( { :name => role_name.to_s }) role = self._auth_role_class.create(role_attrs) end self.roles << role if role && !self.roles.exists?( role.id ) end |
#has_role?(role_name, object = nil) ⇒ Boolean
4 5 6 7 8 9 10 11 12 |
# File 'lib/acl9/model_extensions/subject.rb', line 4 def has_role?(role_name, object = nil) !! if object.nil? self.roles.find_by_name(role_name.to_s) || self.roles.member?(get_role(role_name, nil)) else role = get_role(role_name, object) role && self.roles.exists?(role.id) end end |
#has_roles_for?(object) ⇒ Boolean Also known as: has_role_for?
34 35 36 |
# File 'lib/acl9/model_extensions/subject.rb', line 34 def has_roles_for?(object) !!self.roles.detect(&role_selecting_lambda(object)) end |
#roles_for(object) ⇒ Object
40 41 42 |
# File 'lib/acl9/model_extensions/subject.rb', line 40 def roles_for(object) self.roles.select(&role_selecting_lambda(object)) end |