Classe: Mongoid::Association::Referenced::HasAndBelongsToMany::Binding
- Herda:
-
Objeto
- Objeto
- Mongoid::Association::Referenced::HasAndBelongsToMany::Binding
- 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
-
#bind_one(doc) ➤ Objeto
Vincula um único documento com a associação inversa.
-
#determine_inverse_association(doc) ➤ Mongoid::Association::Relatable
Encontre a associação inversa dado um documento.
-
#inverse_record_id(doc) ⇒ BSON::ObjectId
Encontre o ID inverso referenciado por inverse_keys.
-
#unbind_one(doc) ➤ Objeto
Desvincular um único documento.
Métodos incluídos do Bindable
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.
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.
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
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.[: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.
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 |