Module: Xylem::InstanceMethods
- Defined in:
- lib/xylem.rb
Instance Method Summary collapse
- #ancestors ⇒ Object
- #descendants ⇒ Object
- #leaf? ⇒ Boolean
- #leaves ⇒ Object
- #root ⇒ Object
- #root? ⇒ Boolean
- #self_and_ancestors ⇒ Object
- #self_and_children ⇒ Object
- #self_and_descendants ⇒ Object
- #self_and_siblings ⇒ Object
- #siblings ⇒ Object
Instance Method Details
#ancestors ⇒ Object
5 6 7 |
# File 'lib/xylem.rb', line 5 def ancestors _xylem_query(:id, parent_id, :id, :parent_id, :desc) end |
#descendants ⇒ Object
13 14 15 |
# File 'lib/xylem.rb', line 13 def descendants _xylem_query(:parent_id, id, :parent_id, :id, :asc) end |
#leaf? ⇒ Boolean
41 42 43 |
# File 'lib/xylem.rb', line 41 def leaf? children.size == 0 end |
#leaves ⇒ Object
45 46 47 |
# File 'lib/xylem.rb', line 45 def leaves descendants.leaves end |
#root ⇒ Object
21 22 23 |
# File 'lib/xylem.rb', line 21 def root ancestors.first end |
#root? ⇒ Boolean
37 38 39 |
# File 'lib/xylem.rb', line 37 def root? parent.nil? end |
#self_and_ancestors ⇒ Object
9 10 11 |
# File 'lib/xylem.rb', line 9 def self_and_ancestors _xylem_query(:id, id, :id, :parent_id, :desc) end |
#self_and_children ⇒ Object
33 34 35 |
# File 'lib/xylem.rb', line 33 def self_and_children [self] + children end |
#self_and_descendants ⇒ Object
17 18 19 |
# File 'lib/xylem.rb', line 17 def self_and_descendants _xylem_query(:id, id, :parent_id, :id, :asc) end |
#self_and_siblings ⇒ Object
29 30 31 |
# File 'lib/xylem.rb', line 29 def self_and_siblings self.class.where(parent_id: parent_id) end |
#siblings ⇒ Object
25 26 27 |
# File 'lib/xylem.rb', line 25 def siblings self.class.where(parent_id: parent_id).where.not(id: id) end |