Module: Monarchy::ActsAsMember::SupportMethods

Defined in:
lib/monarchy/acts_as_member.rb

Instance Method Summary collapse

Instance Method Details

#include_callbacksObject



37
38
39
# File 'lib/monarchy/acts_as_member.rb', line 37

def include_callbacks
  after_destroy :revoke_access, if: :members_access_revoke?
end

#include_relationshipsObject



47
48
49
50
51
52
53
# 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_scopesObject



25
26
27
28
29
30
31
32
33
34
35
# 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_validatorsObject



41
42
43
44
45
# 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