Module: ErpTechSvcs::Extensions::ActiveRecord::HasCapabilityAccessors::InstanceMethods
- Defined in:
- lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb
Instance Method Summary collapse
-
#add_capability(*capability) ⇒ Object
pass in (capability_type_iid, klass) or (capability) object.
-
#all_capabilities ⇒ Object
method to get all capabilities for this model.
- #capabilities ⇒ Object
-
#capabilities_not ⇒ Object
method to get capabilities this instance does NOT have.
-
#class_capabilities ⇒ Object
method to get only class capabilities for this model.
-
#class_capabilities_not ⇒ Object
method to get only class capabilities this instance does NOT have.
- #get_capability(capability_type_iid, klass) ⇒ Object
- #get_or_create_capability(capability_type_iid, klass) ⇒ Object
- #grant_capability(*capability) ⇒ Object
- #has_capabilities? ⇒ Boolean
-
#instance_capabilities ⇒ Object
method to get only instance capabilities for this model.
-
#query_capabilities ⇒ Object
method to get only query capabilities for this model.
- #query_capabilities_not ⇒ Object
-
#remove_capability(*capability) ⇒ Object
pass in (capability_type_iid, klass) or (capability) object.
- #revoke_capability(*capability) ⇒ Object
- #scope_capabilities(scope_type_iid) ⇒ Object
- #scope_capabilities_not(scope_type_iid) ⇒ Object
Instance Method Details
#add_capability(*capability) ⇒ Object
pass in (capability_type_iid, klass) or (capability) object
79 80 81 82 83 84 85 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 79 def add_capability(*capability) capability_type_iid = capability.first.is_a?(Symbol) ? capability.first.to_s : capability.first capability = capability_type_iid.is_a?(String) ? get_or_create_capability(capability_type_iid, capability.second) : capability.first ca = CapabilityAccessor.find_or_create_by_capability_accessor_record_type_and_capability_accessor_record_id_and_capability_id(get_superclass, self.id, capability.id) self.reload ca end |
#all_capabilities ⇒ Object
method to get all capabilities for this model
59 60 61 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 59 def all_capabilities capabilities end |
#capabilities ⇒ Object
48 49 50 51 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 48 def capabilities Capability.joins(:capability_type).joins(:capability_accessors). where(:capability_accessors => { :capability_accessor_record_type => self.class.name, :capability_accessor_record_id => self.id }) end |
#capabilities_not ⇒ Object
method to get capabilities this instance does NOT have
28 29 30 31 32 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 28 def capabilities_not Capability.joins(:capability_type). joins("LEFT JOIN capability_accessors ON capability_accessors.capability_id = capabilities.id AND capability_accessors.capability_accessor_record_type = '#{self.class.name}' AND capability_accessors.capability_accessor_record_id = #{self.id}"). where("capability_accessors.id IS NULL") end |
#class_capabilities ⇒ Object
method to get only class capabilities for this model
64 65 66 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 64 def class_capabilities scope_capabilities('class') end |
#class_capabilities_not ⇒ Object
method to get only class capabilities this instance does NOT have
40 41 42 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 40 def class_capabilities_not scope_capabilities_not('class') end |
#get_capability(capability_type_iid, klass) ⇒ Object
101 102 103 104 105 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 101 def get_capability(capability_type_iid, klass) capability_type = convert_capability_type(capability_type_iid) scope_type = ScopeType.find_by_internal_identifier('class') Capability.find_by_capability_resource_type_and_capability_type_id_and_scope_type_id(klass, capability_type.id, scope_type.id) end |
#get_or_create_capability(capability_type_iid, klass) ⇒ Object
91 92 93 94 95 96 97 98 99 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 91 def get_or_create_capability(capability_type_iid, klass) capability_type = convert_capability_type(capability_type_iid) if klass.is_a?(String) scope_type = ScopeType.find_by_internal_identifier('class') Capability.find_or_create_by_capability_resource_type_and_capability_type_id_and_scope_type_id(klass, capability_type.id, scope_type.id) else klass.add_capability(capability_type_iid) # create instance capability end end |
#grant_capability(*capability) ⇒ Object
87 88 89 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 87 def grant_capability(*capability) add_capability(*capability) end |
#has_capabilities? ⇒ Boolean
121 122 123 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 121 def has_capabilities? !capability_accessors.empty? end |
#instance_capabilities ⇒ Object
method to get only instance capabilities for this model
74 75 76 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 74 def instance_capabilities scope_capabilities('instance') end |
#query_capabilities ⇒ Object
method to get only query capabilities for this model
69 70 71 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 69 def query_capabilities scope_capabilities('query') end |
#query_capabilities_not ⇒ Object
44 45 46 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 44 def query_capabilities_not scope_capabilities_not('query') end |
#remove_capability(*capability) ⇒ Object
pass in (capability_type_iid, klass) or (capability) object
108 109 110 111 112 113 114 115 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 108 def remove_capability(*capability) capability_type_iid = capability.first.is_a?(Symbol) ? capability.first.to_s : capability.first capability = capability_type_iid.is_a?(String) ? get_or_create_capability(capability_type_iid, capability.second) : capability.first ca = capability_accessors.where(:capability_accessor_record_type => get_superclass, :capability_accessor_record_id => self.id, :capability_id => capability.id).first ca.destroy unless ca.nil? self.reload ca end |
#revoke_capability(*capability) ⇒ Object
117 118 119 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 117 def revoke_capability(*capability) remove_capability(*capability) end |
#scope_capabilities(scope_type_iid) ⇒ Object
53 54 55 56 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 53 def scope_capabilities(scope_type_iid) scope_type = ScopeType.find_by_internal_identifier(scope_type_iid) capabilities.where(:scope_type_id => scope_type.id) end |
#scope_capabilities_not(scope_type_iid) ⇒ Object
34 35 36 37 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 34 def scope_capabilities_not(scope_type_iid) scope_type = ScopeType.find_by_internal_identifier(scope_type_iid) capabilities_not.where(:scope_type_id => scope_type.id) end |