Class: Mongoid::Relations::Bindings::Referenced::ManyToMany

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

Overview

Binding class for all references_and_referenced_in_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

#bind_one(doc) ⇒ Object

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

Examples:

Bind one document.

person.preferences.bind_one(preference)

Parameters:

  • doc (Document)

    The single document to bind.

Since:

  • 2.0.0.rc.1



19
20
21
22
23
24
25
26
27
28
# File 'lib/mongoid/relations/bindings/referenced/many_to_many.rb', line 19

def bind_one(doc)
  unless _binding?
    _binding do
      inverse_keys = doc.you_must(.inverse_foreign_key)
      inverse_keys.push(base.id) if inverse_keys
      base.synced[.foreign_key] = true
      doc.synced[.inverse_foreign_key] = true
    end
  end
end

#unbind_one(doc) ⇒ Object

Unbind a single document.

Examples:

Unbind the document.

person.preferences.unbind_one(document)

Since:

  • 2.0.0.rc.1



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/mongoid/relations/bindings/referenced/many_to_many.rb', line 36

def unbind_one(doc)
  unless _binding?
    _binding do
      base.send(.foreign_key).delete_one(doc.id)
      inverse_keys = doc.you_must(.inverse_foreign_key)
      inverse_keys.delete_one(base.id) if inverse_keys
      base.synced[.foreign_key] = true
      doc.synced[.inverse_foreign_key] = true
    end
  end
end