module Monarchy::ActsAsResource::SupportMethods

Attributes

acting_as_resource[R]
automatic_hierarchy[RW]
parentize_name[R]

Public Instance Methods

default_role() click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 32
def default_role
  Monarchy.role_class.find_by(name: default_role_name)
end
default_role_name() click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 28
def default_role_name
  Monarchy.configuration.inherited_default_role
end

Private Instance Methods

include_relationships() click to toggle source

rubocop:enable all

# File lib/monarchy/acts_as_resource.rb, line 65
def include_relationships
  has_one :hierarchy, as: :resource, dependent: :destroy, class_name: "::#{Monarchy.hierarchy_class}"
  has_many :members, through: :hierarchy, class_name: "::#{Monarchy.member_class}"
  has_many :users, through: :members, class_name: "::#{Monarchy.user_class}"
end
include_scopes() click to toggle source

rubocop:disable all

# File lib/monarchy/acts_as_resource.rb, line 49
def include_scopes
  scope :in, (lambda do |resource, descendants = true|
    Monarchy::Validators.resource(resource)
    hierarchy = Monarchy.hierarchy_class.hierarchies_for(resource)
    hierarchies = Monarchy.hierarchy_class.in(hierarchy, descendants)
    joins(:hierarchy).where(monarchy_hierarchies: { id: hierarchies })
  end)

  scope :accessible_for, (lambda do |user, options = {}|
    Monarchy::Validators.user(user)
    joins(:hierarchy).where(monarchy_hierarchies: { id: Monarchy.hierarchy_class
                                                                .accessible_for(user, options) })
  end)
end
parent_as(name) click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 44
def parent_as(name)
  @parentize_name = name
end
setup_acting() click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 38
def setup_acting
  Monarchy.resource_classes << self
  @acting_as_resource = true
  @automatic_hierarchy = true
end