Clase: Mongoid::Asociación::Referenciado::TieneYPerteneceAMuchos::Enlace
- Hereda:
-
Objeto
- Objeto
- Mongoid::Asociación::Referenciado::TieneYPerteneceAMuchos::Enlace
- Incluye:
- Enlazable
- Definido en:
- lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb
Overview
Clase de enlace para todas las asociaciones has_and_belongs_to_many.
Resumen del atributo de la instancia
Atributos incluidos desde Bindable
#_association, #_base, #_target
Resumen del método de instancia colapsar
-
#bind_one(doc) ⇒ objeto
Vincula un solo documento con la asociación inversa.
-
#determine_inverse_association(doc) ⇒ Mongoid::Association::Relatable
Encuentra la asociación inversa dada un documento.
-
#inverse_record_id(doc) ⇒ BSON::ObjectId
Encuentra la ID inversa referida por inverse_keys.
-
#unbind_one(doc) ⇒ Object
Desvincula un solo documento.
Métodos incluidos de Bindable
Detalles del método de instancia
#bind_one(doc) ⇒ Objeto
Vincula un único documento con la asociación inversa. Se utiliza específicamente al añadir al proxy.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 20 def bind_one(doc) binding hacer reverse_keys = método de prueba(doc, _association.clave foránea inversa) a menos que doc.frozen? si reverse_keys record_id = inverse_record_id(doc) a menos que reverse_keys.incluir?(record_id) método de prueba(doc, _association.definidor de clave externa inversa, reverse_keys.push(record_id)) end doc.reset_relation_criteria(_association.inversa) end _base._sincronizado[_association.foreign_key] = true doc._sincronizado[_association.clave foránea inversa] = true end end |
#determine_inverse_association(doc) ⇒ Mongoid::Association::Relatable
Encuentra la asociación inversa dada un documento.
77 78 79 |
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 77 def determine_inverse_association(doc) doc.relaciones[_base.clase.Nombre.desmodular.guion bajo.pluralizar] end |
#inverse_record_id(doc) ⇒ BSON::ObjectId
Encuentra el id inverso referenciado por inverse_keys
58 59 60 61 62 63 64 65 66 67 68 69 |
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 58 def inverse_record_id(doc) si pk = _association.[:inverse_primary_key] _base.enviar(pk) else asociación inversa = determine_inverse_association(doc) si asociación inversa _base.__send__(asociación inversa.clave_primaria) else _base._id end end end |
#unbind_one(doc) ⇒ Object
Desvincula un solo documento.
39 40 41 42 43 44 45 46 47 48 49 50 |
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 39 def unbind_one(doc) binding hacer _base.enviar(_association.foreign_key).delete_one(record_id(doc)) reverse_keys = método de prueba(doc, _association.clave foránea inversa) a menos que doc.frozen? si reverse_keys reverse_keys.delete_one(inverse_record_id(doc)) doc.reset_relation_criteria(_association.inversa) end _base._sincronizado[_association.foreign_key] = true doc._sincronizado[_association.clave foránea inversa] = true end end |