module MongoidAbility::Subject::ClassMethods

Public Instance Methods

ancestors_with_default_locks() click to toggle source
# File lib/mongoid_ability/subject.rb, line 42
def ancestors_with_default_locks
  self_and_ancestors_with_default_locks - [self]
end
default_lock(lock_cls, action, outcome, options = {}) click to toggle source
# File lib/mongoid_ability/subject.rb, line 26
def default_lock(lock_cls, action, outcome, options = {})
  lock = lock_cls.new(subject_type: to_s, action: action, outcome: outcome, options: options)

  # remove any existing locks
  if existing_lock = default_locks.detect { |l| l.action == lock.action && l.options == lock.options }
    default_locks.delete(existing_lock)
  end

  # add new lock
  default_locks.push(lock)
end
default_locks() click to toggle source
# File lib/mongoid_ability/subject.rb, line 14
def default_locks
  @default_locks ||= LocksDecorator.new([])
end
default_locks=(locks) click to toggle source
# File lib/mongoid_ability/subject.rb, line 22
def default_locks=(locks)
  @default_locks = locks
end
has_default_lock_for_action?(action) click to toggle source
# File lib/mongoid_ability/subject.rb, line 54
def has_default_lock_for_action?(action)
  default_locks.for_action(action).present?
end
is_root_class?() click to toggle source
# File lib/mongoid_ability/subject.rb, line 46
def is_root_class?
  root_class == self
end
reset_default_locks!() click to toggle source
# File lib/mongoid_ability/subject.rb, line 18
def reset_default_locks!
  @default_locks = LocksDecorator.new([])
end
root_class() click to toggle source
# File lib/mongoid_ability/subject.rb, line 50
def root_class
  self_and_ancestors_with_default_locks.last
end
self_and_ancestors_with_default_locks() click to toggle source
# File lib/mongoid_ability/subject.rb, line 38
def self_and_ancestors_with_default_locks
  ancestors.select { |a| a.is_a?(Class) && a.respond_to?(:default_locks) }
end