Classe: Mongoid::Association::Referenced::HasAndBelongsToMany::Binding

Herda:
Objeto
  • Objeto
mostrar tudo
Inclui:
Vinculável
Definido em:
lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb

Visão geral

classe vinculativa para todas as associações has_and_belongs_to_many.

Resumo do atributo de instância

Atributos incluídos do Bindable

#_association, #_base, #_target

Recolhimento do Resumo do método de instância

Métodos incluídos do Bindable

#binding, #initialize

Detalhes do método de instância

#bind_one(doc) ➤ Objeto

Vincula um único documento com a associação inversa. Usado especificamente ao anexar ao proxy.

Exemplos:

Vincular um documento.

person.preferences.bind_one(preference)

Parâmetros:

  • doc (Documento)

    O único documento a ser vinculado.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', linha 20

def bind_one(doc)
  vinculativo fazer
    inverse_keys = try_method(doc, _association.inverse_foreign_key) a menos que doc.congelado?
    se inverse_keys
      record_id = inverse_record_id(doc)
      a menos que inverse_keys.incluir?(record_id)
        try_method(doc, _association.inverse_foreign_key_setter, inverse_keys.push(record_id))
      end
      doc.reinício_relation_criteria(_association.inverso)
    end
    _base._synced[_association.foreign_key] = true
    doc._synced[_association.inverse_foreign_key] = true
  end
end

#determine_inverse_association(doc) ➤ Mongoid::Association::Relatable

Encontre a associação inversa dado um documento.

Parâmetros:

  • doc (Mongoid::Document)

    O documento para o qual determinar a associação inversa.

Retorna:



77
78
79
# File 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', linha 77

def determinar_inverse_association(doc)
  doc.relações[_base.classe.name.demodule.sublinhado.pluralizar]
end

#inverse_record_id(doc) ⇒ BSON::ObjectId

Encontre o ID inverso referenciado por inverse_keys

Parâmetros:

Retorna:

  • (BSON::ObjectId)

    O ID inverso .



58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', linha 58

def inverse_record_id(doc)
  se pk = _association.opções[:inverse_primary_key]
    _base.enviar(pk)
  mais
    inverse_association = determinar_inverse_association(doc)
    se inverse_association
      _base.__send__(inverse_association.primary_key)
    mais
      _base._id
    end
  end
end

#unbind_one(doc) ⇒ Object

Desvincular um único documento.

Exemplos:

Desvincule o documento.

person.preferences.unbind_one(document)


39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', linha 39

def unbind_one(doc)
  vinculativo fazer
    _base.enviar(_association.foreign_key).delete_one(record_id(doc))
    inverse_keys = try_method(doc, _association.inverse_foreign_key) a menos que doc.congelado?
    se inverse_keys
      inverse_keys.delete_one(inverse_record_id(doc))
      doc.reinício_relation_criteria(_association.inverso)
    end
    _base._synced[_association.foreign_key] = true
    doc._synced[_association.inverse_foreign_key] = true
  end
end