module ErpTechSvcs::Extensions::ActiveRecord::HasCapabilityAccessors::InstanceMethods
Public Instance Methods
add_capabilities(_capabilities)
click to toggle source
Add multiple capabilities
@param _capabilities [Array] Array of Capbilities
# 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
Also aliased as: grant_capabilities
add_capability(*capability)
click to toggle source
pass in (capability_type_iid, klass) or (capability) object
# 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
Also aliased as: grant_capability
all_capabilities()
click to toggle source
method to get all capabilities for this model
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 57 def all_capabilities capabilities end
capabilities()
click to toggle source
# 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()
click to toggle source
method to get capabilities this instance does NOT have
# 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()
click to toggle source
method to get only class capabilities for this model
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 62 def class_capabilities scope_capabilities('class') end
class_capabilities_not()
click to toggle source
method to get only class capabilities this instance does NOT have
# 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)
click to toggle source
# 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)
click to toggle source
# 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?()
click to toggle source
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 92 def has_capabilities? !capability_accessors.empty? end
instance_capabilities()
click to toggle source
method to get only instance capabilities for this model
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 72 def instance_capabilities scope_capabilities('instance') end
query_capabilities()
click to toggle source
method to get only query capabilities for this model
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 67 def query_capabilities scope_capabilities('query') end
query_capabilities_not()
click to toggle source
# 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()
click to toggle source
Remove all current capabilities
# 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
Also aliased as: revoke_all_capabilities
remove_capabilities(_capabilities)
click to toggle source
Remove multiple capabilities
@param _capabilities [Array] Array of Capbilities
# 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
Also aliased as: revoke_capabilities
remove_capability(*capability)
click to toggle source
pass in (capability_type_iid, klass) or (capability) object
# 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
Also aliased as: revoke_capability
scope_capabilities(scope_type_iid)
click to toggle source
# 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)
click to toggle source
# 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
Private Instance Methods
convert_capability_type(type)
click to toggle source
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 153 def convert_capability_type(type) return type if type.is_a?(CapabilityType) return nil unless (type.is_a?(String) || type.is_a?(Symbol)) ct = CapabilityType.find_by_internal_identifier(type.to_s) return ct unless ct.nil? CapabilityType.create(:internal_identifier => type.to_s, :description => type.to_s.titleize) end