Module: Monarchy::ActsAsHierarchy::ClassMethods
- Defined in:
- lib/monarchy/acts_as_hierarchy.rb,
lib/monarchy/acts_as_hierarchy.rb
Instance Method Summary collapse
- #acts_as_hierarchy ⇒ Object
- #ancestors_for(hierarchies) ⇒ Object
- #children_for(hierarchies) ⇒ Object
- #descendants_for(hierarchies) ⇒ Object
- #hierarchies_for(resources) ⇒ Object
- #parents_for(hierarchies) ⇒ Object
Instance Method Details
#acts_as_hierarchy ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/monarchy/acts_as_hierarchy.rb', line 8 def acts_as_hierarchy extend Monarchy::ActsAsHierarchy::SupportMethods self.table_name = 'monarchy_hierarchies' has_closure_tree dependent: :destroy include_relations include_scopes include_validators extend Monarchy::ActsAsHierarchy::ClassMethods include Monarchy::ActsAsHierarchy::InstanceMethods end |
#ancestors_for(hierarchies) ⇒ Object
53 54 55 56 57 58 59 60 61 |
# File 'lib/monarchy/acts_as_hierarchy.rb', line 53 def ancestors_for(hierarchies) check_argument_type(hierarchies) return none unless hierarchies unscoped.joins('INNER JOIN monarchy_hierarchy_hierarchies ON '\ 'monarchy_hierarchies.id = monarchy_hierarchy_hierarchies.ancestor_id') .where(monarchy_hierarchy_hierarchies: { descendant_id: hierarchies.select(:id) }) .where('monarchy_hierarchy_hierarchies.generations > 0') end |
#children_for(hierarchies) ⇒ Object
34 35 36 37 |
# File 'lib/monarchy/acts_as_hierarchy.rb', line 34 def children_for(hierarchies) check_argument_type(hierarchies) hierarchies ? unscoped.where(parent: hierarchies) : none end |
#descendants_for(hierarchies) ⇒ Object
48 49 50 51 |
# File 'lib/monarchy/acts_as_hierarchy.rb', line 48 def descendants_for(hierarchies) check_argument_type(hierarchies) hierarchies ? unscoped.with_ancestor(hierarchies) : none end |
#hierarchies_for(resources) ⇒ Object
29 30 31 32 |
# File 'lib/monarchy/acts_as_hierarchy.rb', line 29 def hierarchies_for(resources) check_argument_type(resources) resources ? unscoped.where(resource: resources) : none end |
#parents_for(hierarchies) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/monarchy/acts_as_hierarchy.rb', line 39 def parents_for(hierarchies) check_argument_type(hierarchies) return none unless hierarchies unscoped.joins('INNER JOIN monarchy_hierarchies AS hierarchies_children ON '\ 'monarchy_hierarchies.id = hierarchies_children.parent_id') .where(hierarchies_children: { id: hierarchies }) end |