class MongoidAbility::FindLock

finds first lock that controls specified params

Public Class Methods

call(*args) click to toggle source
# File lib/mongoid_ability/find_lock.rb, line 5
def self.call(*args)
  new(*args).call
end
new(owner, action, subject_type, subject_id = nil, options = {}) click to toggle source
Calls superclass method
# File lib/mongoid_ability/find_lock.rb, line 9
def initialize(owner, action, subject_type, subject_id = nil, options = {})
  super(owner, action, subject_type.to_s, subject_id, options)
end

Public Instance Methods

call() click to toggle source
# File lib/mongoid_ability/find_lock.rb, line 13
def call
  lock = nil
  subject_class.self_and_ancestors_with_default_locks.each do |cls|
    break if lock = FindOwnedLock.call(owner, action, cls, subject_id, options)
    break if lock = FindInheritedLock.call(owner, action, cls, subject_id, options)
    break if lock = FindDefaultLock.call(owner, action, cls, subject_id, options)
  end
  lock
end

Private Instance Methods

subject_class() click to toggle source
# File lib/mongoid_ability/find_lock.rb, line 25
def subject_class
  subject_type.constantize
end