Class: MongoidAbility::ResolveOwnerLocks
- Inherits:
-
ResolveLocks
- Object
- Struct
- ResolveLocks
- MongoidAbility::ResolveOwnerLocks
- Defined in:
- lib/mongoid_ability/resolve_owner_locks.rb
Instance Attribute Summary
Attributes inherited from ResolveLocks
#action, #options, #owner, #subject, #subject_class, #subject_id, #subject_type
Instance Method Summary collapse
Methods inherited from ResolveLocks
Constructor Details
This class inherits a constructor from MongoidAbility::ResolveLocks
Instance Method Details
#call ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/mongoid_ability/resolve_owner_locks.rb', line 4 def call # FIXME: this is not a very nice fix return unless owner.respond_to?(:locks_relation) locks_for_subject_type = owner.locks_relation.for_action(action).for_subject_type(subject_type) return unless locks_for_subject_type.exists? # return outcome if owner defines lock for id if subject.present? id_locks = locks_for_subject_type.id_locks.for_subject_id(subject_id) return false if id_locks.any?{ |l| l.closed?() } return true if id_locks.any?{ |l| l.open?() } end # return outcome if owner defines lock for subject_type class_locks = locks_for_subject_type.class_locks return false if class_locks.class_locks.any?{ |l| l.closed?() } return true if class_locks.class_locks.any?{ |l| l.open?() } nil end |