class MongoidAbility::FindLock::FindOwnedLock

Public Instance Methods

call() click to toggle source
# File lib/mongoid_ability/find_lock.rb, line 57
def call
  return unless owner.respond_to?(:locks_relation)
  locks = owner.locks_relation.for_action(action).for_subject_type(subject_type)

  if subject_id.present?
    lock = locks.for_subject_id(subject_id).detect(&:closed?) ||
           locks.for_subject_id(subject_id).detect(&:open?)
    return lock unless lock.nil?
  end

  locks.class_locks.detect(&:closed?) || locks.class_locks.detect(&:open?)
end