module Couchbase::Model::Relationship::Parent

Public Instance Methods

changed_children() click to toggle source
# File lib/couchbase/model/relationship/parent.rb, line 83
def changed_children
  loaded_children.select do |child|
    child.changed? || (child.respond_to?(:children_changed?) ? child.children_changed? : nil)
  end
end
children() click to toggle source
# File lib/couchbase/model/relationship/parent.rb, line 71
def children
  self.class.child_associations.map do |association|
    association.fetch self
  end.compact
end
children_changed?() click to toggle source
# File lib/couchbase/model/relationship/parent.rb, line 40
def children_changed?
  changed_children.present?
end
delete_with_autodelete_children(options = {}) click to toggle source
# File lib/couchbase/model/relationship/parent.rb, line 51
def delete_with_autodelete_children(options = {})
  self.class.child_associations.select(&:auto_delete).each do |association|
    association.fetch(self).try :delete, options
  end

  delete_without_autodelete_children(options)
end
delete_with_children(options = {}) click to toggle source

FIXME changed? should include children if any are autosave

# File lib/couchbase/model/relationship/parent.rb, line 61
def delete_with_children(options = {})
  children.each do |child| 
    if child.persisted?
      child.delete options
    end
  end

  delete(options)
end
loaded_children() click to toggle source
# File lib/couchbase/model/relationship/parent.rb, line 77
def loaded_children
  self.class.child_associations.map do |association|
    association.fetch(self) if association.loaded?(self)
  end.compact
end
reload_all() click to toggle source
# File lib/couchbase/model/relationship/parent.rb, line 89
def reload_all
  children.each(&:reload)
  reload
end
save_with_autosave_children(options = {}) click to toggle source
# File lib/couchbase/model/relationship/parent.rb, line 29
def save_with_autosave_children(options = {})
  # Don't save if we failed
  save_without_autosave_children(options).tap do |result|
    if result
      self.class.child_associations.select(&:auto_save).each do |association|
        association.fetch(self).try :save_if_changed, options
      end
    end
  end
end
save_with_changed_children() click to toggle source
# File lib/couchbase/model/relationship/parent.rb, line 44
def save_with_changed_children
  save_if_changed
  changed_children.each do |child|
    child.respond_to?(:save_with_changed_children) ? child.save_with_changed_children : child.save_if_changed
  end
end
save_with_children(options = {}) click to toggle source

TODO How to handle failures saving children?

# File lib/couchbase/model/relationship/parent.rb, line 19
def save_with_children(options = {})
  save(options).tap do |result|
    if result
      children.each do |child|
        child.save_if_changed(options)
      end
    end
  end
end