module Parentry::InstanceMethods

Public Instance Methods

ancestor_ids_was() click to toggle source
# File lib/parentry/instance_methods.rb, line 47
def ancestor_ids_was
  return [] unless saved_changes[parentry_column]

  parse_parentry(saved_changes[parentry_column][0]).tap(&:pop)
end
assign_parentry() click to toggle source
# File lib/parentry/instance_methods.rb, line 16
def assign_parentry
  write_attribute(parentry_column, compute_parentry)
end
cache_parentry_depth() click to toggle source
# File lib/parentry/instance_methods.rb, line 20
def cache_parentry_depth
  write_attribute(:parentry_depth, depth)
end
commit_parentry() click to toggle source
# File lib/parentry/instance_methods.rb, line 12
def commit_parentry
  update_column(parentry_column, compute_parentry)
end
parentry() click to toggle source
# File lib/parentry/instance_methods.rb, line 24
def parentry
  read_attribute(parentry_column)
end
parentry_scope() click to toggle source
# File lib/parentry/instance_methods.rb, line 3
def parentry_scope
  self.class.base_class
end
prevent_circular_parentry() click to toggle source
# File lib/parentry/instance_methods.rb, line 7
def prevent_circular_parentry
  computed = parse_parentry(compute_parentry)
  errors.add(:parentry, 'contains a circular reference') unless computed.uniq == computed
end
touch_ancestors_callback() click to toggle source
# File lib/parentry/instance_methods.rb, line 28
def touch_ancestors_callback
  return unless touch_ancestors
  return if touch_callbacks_disabled?

  parentry_scope.where(id: ancestor_ids_was + ancestor_ids).each do |ancestor|
    ancestor.without_touch_callbacks { ancestor.touch }
  end
end
touch_callbacks_disabled?() click to toggle source
# File lib/parentry/instance_methods.rb, line 43
def touch_callbacks_disabled?
  @disable_touch_callbacks
end
without_touch_callbacks() { || ... } click to toggle source
# File lib/parentry/instance_methods.rb, line 37
def without_touch_callbacks
  @disable_touch_callbacks = true
  yield
  @disable_touch_callbacks = false
end