Module: ErpTechSvcs::Extensions::ActiveRecord::HasCapabilityAccessors::InstanceMethods
- Defined in:
- lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb
Instance Method Summary collapse
-
#add_capabilities(_capabilities) ⇒ Object
(also: #grant_capabilities)
Add multiple capabilities.
-
#add_capability(*capability) ⇒ Object
(also: #grant_capability)
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
- #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_all_capabilities ⇒ Object
(also: #revoke_all_capabilities)
Remove all current capabilities.
-
#remove_capabilities(_capabilities) ⇒ Object
(also: #revoke_capabilities)
Remove multiple capabilities.
-
#remove_capability(*capability) ⇒ Object
(also: #revoke_capability)
pass in (capability_type_iid, klass) or (capability) object.
- #scope_capabilities(scope_type_iid) ⇒ Object
- #scope_capabilities_not(scope_type_iid) ⇒ Object
Instance Method Details
#add_capabilities(_capabilities) ⇒ Object Also known as: grant_capabilities
Add multiple capabilities
99 100 101 102 103 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 99 def add_capabilities(_capabilities) _capabilities.each do |capability| add_capability(capability) end end |
#add_capability(*capability) ⇒ Object Also known as: grant_capability
pass in (capability_type_iid, klass) or (capability) object
108 109 110 111 112 113 114 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 108 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
57 58 59 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 57 def all_capabilities capabilities end |
#capabilities ⇒ Object
46 47 48 49 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 46 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
26 27 28 29 30 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 26 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
62 63 64 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 62 def class_capabilities scope_capabilities('class') end |
#class_capabilities_not ⇒ Object
method to get only class capabilities this instance does NOT have
38 39 40 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 38 def class_capabilities_not scope_capabilities_not('class') end |
#get_capability(capability_type_iid, klass) ⇒ Object
86 87 88 89 90 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 86 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
76 77 78 79 80 81 82 83 84 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 76 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 |
#has_capabilities? ⇒ Boolean
92 93 94 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 92 def has_capabilities? !capability_accessors.empty? end |
#instance_capabilities ⇒ Object
method to get only instance capabilities for this model
72 73 74 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 72 def instance_capabilities scope_capabilities('instance') end |
#query_capabilities ⇒ Object
method to get only query capabilities for this model
67 68 69 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 67 def query_capabilities scope_capabilities('query') end |
#query_capabilities_not ⇒ Object
42 43 44 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 42 def query_capabilities_not scope_capabilities_not('query') end |
#remove_all_capabilities ⇒ Object Also known as: revoke_all_capabilities
Remove all current capabilities
143 144 145 146 147 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 143 def remove_all_capabilities capabilities.each do |capability| remove_capability(capability) end end |
#remove_capabilities(_capabilities) ⇒ Object Also known as: revoke_capabilities
Remove multiple capabilities
133 134 135 136 137 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 133 def remove_capabilities(_capabilities) _capabilities.each do |capability| remove_capability(capability) end end |
#remove_capability(*capability) ⇒ Object Also known as: revoke_capability
pass in (capability_type_iid, klass) or (capability) object
119 120 121 122 123 124 125 126 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 119 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 |
#scope_capabilities(scope_type_iid) ⇒ Object
51 52 53 54 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 51 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
32 33 34 35 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb', line 32 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 |