Class: Mongoid::Relations::Bindings::Embedded::Many

Inherits:
Mongoid::Relations::Binding show all
Defined in:
lib/mongoid/relations/bindings/embedded/many.rb

Overview

Binding class for embeds_many relations.

Instance Attribute Summary

Attributes inherited from Mongoid::Relations::Binding

#base, #metadata, #target

Instance Method Summary collapse

Methods inherited from Mongoid::Relations::Binding

#initialize

Constructor Details

This class inherits a constructor from Mongoid::Relations::Binding

Instance Method Details

#bindObject

Binds the base object to the inverse of the relation. This is so we are referenced to the actual objects themselves on both sides.

This case sets the metadata on the inverse object as well as the document itself.

Examples:

Bind all the documents.

person.addresses.bind
person.addresses = [ Address.new ]

Parameters:

  • options (Hash)

    The binding options.

Since:

  • 2.0.0.rc.1



26
27
28
# File 'lib/mongoid/relations/bindings/embedded/many.rb', line 26

def bind
  target.each { |doc| bind_one(doc) }
end

#bind_one(doc) ⇒ Object

Binds a single document with the inverse relation. Used specifically when appending to the proxy.

Examples:

Bind one document.

person.addresses.bind_one(address)

Parameters:

  • doc (Document)

    The single document to bind.

  • options (Hash)

    The binding options.

Since:

  • 2.0.0.rc.1



43
44
45
46
47
48
49
50
51
52
# File 'lib/mongoid/relations/bindings/embedded/many.rb', line 43

def bind_one(doc)
  doc.parentize(base)
  unless _binding?
    _binding do
      unless .versioned?
        doc.do_or_do_not(.inverse_setter(target), base)
      end
    end
  end
end

#unbindObject

Unbinds the base object and the inverse, caused by setting the reference to nil.

Examples:

Unbind the documents.

person.addresses.unbind
person.addresses = nil

Parameters:

  • options (Hash)

    The binding options.

Since:

  • 2.0.0.rc.1



67
68
69
# File 'lib/mongoid/relations/bindings/embedded/many.rb', line 67

def unbind
  target.each { |doc| unbind_one(doc) }
end

#unbind_one(doc) ⇒ Object

Unbind a single document.

Examples:

Unbind the document.

person.addresses.unbind_one(document)

Parameters:

  • options (Hash)

    The binding options.

Since:

  • 2.0.0.rc.1



82
83
84
85
86
87
88
# File 'lib/mongoid/relations/bindings/embedded/many.rb', line 82

def unbind_one(doc)
  unless _binding?
    _binding do
      doc.do_or_do_not(.inverse_setter(target), nil)
    end
  end
end