Module: Parentry::InstanceMethods
- Defined in:
- lib/parentry/instance_methods.rb
Instance Method Summary collapse
- #assign_parentry ⇒ Object
- #cache_parentry_depth ⇒ Object
- #cascade_parentry ⇒ Object
- #commit_parentry ⇒ Object
- #compute_parentry ⇒ Object
- #parentry ⇒ Object
- #parentry_scope ⇒ Object
- #prevent_circular_parentry ⇒ Object
Instance Method Details
#assign_parentry ⇒ Object
16 17 18 |
# File 'lib/parentry/instance_methods.rb', line 16 def assign_parentry write_attribute(parentry_column, compute_parentry) end |
#cache_parentry_depth ⇒ Object
20 21 22 |
# File 'lib/parentry/instance_methods.rb', line 20 def cache_parentry_depth update_column(:parentry_depth, depth) end |
#cascade_parentry ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/parentry/instance_methods.rb', line 24 def cascade_parentry old_path, new_path = changes[parentry_column] parentry_scope.where( ["#{parentry_column} <@ :ltree AND id != :id", ltree: old_path, id: id] ).update_all( [ "#{parentry_column} = :new_path || subpath(#{parentry_column}, nlevel(:old_path))", new_path: new_path, old_path: old_path ] ) end |
#commit_parentry ⇒ Object
12 13 14 |
# File 'lib/parentry/instance_methods.rb', line 12 def commit_parentry update_column(parentry_column, compute_parentry) end |
#compute_parentry ⇒ Object
36 37 38 |
# File 'lib/parentry/instance_methods.rb', line 36 def compute_parentry parent.present? ? "#{parent.parentry}.#{id}" : "#{id}" end |
#parentry ⇒ Object
40 41 42 |
# File 'lib/parentry/instance_methods.rb', line 40 def parentry read_attribute(parentry_column) end |
#parentry_scope ⇒ Object
3 4 5 |
# File 'lib/parentry/instance_methods.rb', line 3 def parentry_scope self.class.base_class end |
#prevent_circular_parentry ⇒ Object
7 8 9 10 |
# File 'lib/parentry/instance_methods.rb', line 7 def prevent_circular_parentry computed = compute_parentry errors.add(:parentry, 'contains a circular reference') unless computed.split('.').uniq == computed.split('.') end |