module Monarchy::ActsAsMember::SupportMethods
Public Instance Methods
include_callbacks()
click to toggle source
# File lib/monarchy/acts_as_member.rb, line 37 def include_callbacks after_destroy :revoke_access, if: :members_access_revoke? end
include_relationships()
click to toggle source
# File lib/monarchy/acts_as_member.rb, line 47 def include_relationships has_many :members_roles, dependent: :destroy, class_name: 'Monarchy::MembersRole' has_many :roles, -> { order(level: :desc) }, through: :members_roles, class_name: "::#{Monarchy.role_class}" belongs_to :user, class_name: "::#{Monarchy.user_class}" belongs_to :hierarchy, class_name: "::#{Monarchy.hierarchy_class}" end
include_scopes()
click to toggle source
# File lib/monarchy/acts_as_member.rb, line 25 def include_scopes scope :accessible_for, (lambda do |user| Monarchy::Validators.user(user) where(hierarchy: Monarchy.hierarchy_class.accessible_for(user)) end) scope :with_access_to, (lambda do |resource| Monarchy::Validators.resource(resource) where(id: with_ancestors_access(resource).union(with_descendants_access(resource))) end) end
include_validators()
click to toggle source
# File lib/monarchy/acts_as_member.rb, line 41 def include_validators validates :user_id, uniqueness: { scope: :hierarchy_id } validates :user, presence: true validate :hierarchy_or_resource end
with_ancestors_access(resource)
click to toggle source
# File lib/monarchy/acts_as_member.rb, line 55 def with_ancestors_access(resource) unscoped.where(hierarchy: resource.hierarchy.self_and_ancestors) .joins(:roles).where(monarchy_roles: { inherited: true }) end
with_descendants_access(resource)
click to toggle source
# File lib/monarchy/acts_as_member.rb, line 60 def with_descendants_access(resource) unscoped.where(hierarchy: resource.hierarchy.descendants) end