Module: ErpTechSvcs::Extensions::ActiveRecord::HasSecurityRoles::InstanceMethods
- Defined in:
- lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb
Instance Method Summary collapse
- #add_role(role) ⇒ Object
- #add_roles(*passed_roles) ⇒ Object
- #has_role?(*passed_roles) ⇒ Boolean
- #remove_all_roles ⇒ Object
- #remove_role(role) ⇒ Object
- #remove_roles(*passed_roles) ⇒ Object
- #roles ⇒ Object
- #roles_not ⇒ Object
Instance Method Details
#add_role(role) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 37 def add_role(role) role = role.is_a?(SecurityRole) ? role : SecurityRole.find_by_internal_identifier(role.to_s) unless self.has_role?(role) self.security_roles << role self.save end end |
#add_roles(*passed_roles) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 45 def add_roles(*passed_roles) passed_roles.flatten! passed_roles = passed_roles.first if passed_roles.first.is_a? Array passed_roles.each do |role| self.add_role(role) end end |
#has_role?(*passed_roles) ⇒ Boolean
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 70 def has_role?(*passed_roles) result = false passed_roles.flatten! passed_roles.each do |role| role_iid = role.is_a?(SecurityRole) ? role.internal_identifier : role.to_s self.security_roles.each do |this_role| result = true if (this_role.internal_identifier == role_iid) break if result end break if result end result end |
#remove_all_roles ⇒ Object
65 66 67 68 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 65 def remove_all_roles self.security_roles = [] self.save end |
#remove_role(role) ⇒ Object
53 54 55 56 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 53 def remove_role(role) role = role.is_a?(SecurityRole) ? role : SecurityRole.find_by_internal_identifier(role.to_s) self.security_roles.delete(role) if has_role?(role) end |
#remove_roles(*passed_roles) ⇒ Object
58 59 60 61 62 63 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 58 def remove_roles(*passed_roles) passed_roles.flatten! passed_roles.each do |role| self.remove_role(role) end end |
#roles ⇒ Object
33 34 35 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 33 def roles self.security_roles end |
#roles_not ⇒ Object
29 30 31 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 29 def roles_not SecurityRole.where("id NOT IN (#{self.security_roles.select(:id).to_sql})") end |