Module: MongoidAbility::Subject::ClassMethods

Defined in:
lib/mongoid_ability/subject.rb

Overview


Instance Method Summary collapse

Instance Method Details

#accessible_by(ability, action = :read, options = {}) ⇒ Object



39
40
41
# File 'lib/mongoid_ability/subject.rb', line 39

def accessible_by ability, action=:read, options={}
  AccessibleQueryBuilder.call(self, ability, action, options)
end

#ancestors_with_default_locksObject



35
36
37
# File 'lib/mongoid_ability/subject.rb', line 35

def ancestors_with_default_locks
  self_and_ancestors_with_default_locks - [self]
end

#default_lock(lock_cls, action, outcome, attrs = {}) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/mongoid_ability/subject.rb', line 21

def default_lock lock_cls, action, outcome, attrs={}
  lock = lock_cls.new( { subject_type: self.to_s, action: action, outcome: outcome }.merge(attrs))

  if existing_lock = default_locks.detect{ |l| l.action.to_s == lock.action.to_s }
    default_locks.delete(existing_lock)
  end

  default_locks.push lock
end

#default_locksObject



13
14
15
# File 'lib/mongoid_ability/subject.rb', line 13

def default_locks
  @default_locks ||= []
end

#default_locks=(locks) ⇒ Object



17
18
19
# File 'lib/mongoid_ability/subject.rb', line 17

def default_locks= locks
  @default_locks = locks
end

#self_and_ancestors_with_default_locksObject



31
32
33
# File 'lib/mongoid_ability/subject.rb', line 31

def self_and_ancestors_with_default_locks
  ancestors.select { |a| a.is_a?(Class) && a.respond_to?(:default_locks) }
end