Module: MongoidAbility::Subject::ClassMethods
- Defined in:
- lib/mongoid_ability/subject.rb
Instance Method Summary collapse
-
#accessible_by(ability, action = :read, options = {}) ⇒ Object
———————————————————————.
- #ancestors_with_default_locks ⇒ Object
- #default_lock(lock_cls, action, outcome, options = {}) ⇒ Object
-
#default_lock_for_action(action) ⇒ Object
———————————————————————.
- #default_locks ⇒ Object
- #default_locks=(locks) ⇒ Object
- #has_default_lock_for_action?(action) ⇒ Boolean
- #is_root_class? ⇒ Boolean
- #root_class ⇒ Object
-
#self_and_ancestors_with_default_locks ⇒ Object
———————————————————————.
Instance Method Details
#accessible_by(ability, action = :read, options = {}) ⇒ Object
67 68 69 |
# File 'lib/mongoid_ability/subject.rb', line 67 def accessible_by ability, action=:read, ={} AccessibleQueryBuilder.call(self, ability, action, ) end |
#ancestors_with_default_locks ⇒ Object
43 44 45 |
# File 'lib/mongoid_ability/subject.rb', line 43 def ancestors_with_default_locks self_and_ancestors_with_default_locks - [self] end |
#default_lock(lock_cls, action, outcome, options = {}) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/mongoid_ability/subject.rb', line 19 def default_lock lock_cls, action, outcome, ={} unless is_root_class? unless root_class.has_default_lock_for_action?(action) raise StandardError, "action is not defined on root class (#{root_class})" end end lock = lock_cls.new( subject_type: self.to_s, action: action, outcome: outcome, options: ) # remove any existing locks if existing_lock = default_locks.detect{ |l| l.action == lock.action } default_locks.delete(existing_lock) end # add new lock default_locks.push lock end |
#default_lock_for_action(action) ⇒ Object
57 58 59 |
# File 'lib/mongoid_ability/subject.rb', line 57 def default_lock_for_action action default_locks.detect{ |lock| lock.action == action.to_sym } end |
#default_locks ⇒ Object
11 12 13 |
# File 'lib/mongoid_ability/subject.rb', line 11 def default_locks @default_locks ||= [] end |
#default_locks=(locks) ⇒ Object
15 16 17 |
# File 'lib/mongoid_ability/subject.rb', line 15 def default_locks= locks @default_locks = locks end |
#has_default_lock_for_action?(action) ⇒ Boolean
61 62 63 |
# File 'lib/mongoid_ability/subject.rb', line 61 def has_default_lock_for_action? action default_lock_for_action(action).present? end |
#is_root_class? ⇒ Boolean
47 48 49 |
# File 'lib/mongoid_ability/subject.rb', line 47 def is_root_class? root_class == self end |
#root_class ⇒ Object
51 52 53 |
# File 'lib/mongoid_ability/subject.rb', line 51 def root_class self_and_ancestors_with_default_locks.last end |
#self_and_ancestors_with_default_locks ⇒ Object
39 40 41 |
# File 'lib/mongoid_ability/subject.rb', line 39 def self_and_ancestors_with_default_locks ancestors.select { |a| a.is_a?(Class) && a.respond_to?(:default_locks) } end |