Clase: Mongoid::Association::Referenced::HasAndBelongsToMany::Binding
- Hereda:
-
Objeto
- Objeto
- Mongoid::Association::Referenced::HasAndBelongsToMany::Binding
- 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 Vinculable
#_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) ⇒ Object
Vincula un único documento con la asociación inversa. Se utiliza específicamente al añadir al proxy.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 18 def bind_one(doc) binding hacer reverse_keys = try_method(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) try_method(doc, _association.inverso_establecedor_de_claves_externas, reverse_keys.push(record_id)) end doc.reset_relation_criteria(_association.inversa) end _base.sincronizar[_association.foreign_key] = true doc.sincronizar[_association.clave foránea inversa] = true end end |
#determine_inverse_association(doc) ⇒ Mongoid::Association::Relatable
Encuentra la asociación inversa dada un documento.
75 76 77 |
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 75 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
56 57 58 59 60 61 62 63 64 65 66 67 |
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 56 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.
37 38 39 40 41 42 43 44 45 46 47 48 |
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 37 def unbind_one(doc) binding hacer _base.enviar(_association.foreign_key).delete_one(record_id(doc)) reverse_keys = try_method(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.sincronizar[_association.foreign_key] = true doc.sincronizar[_association.clave foránea inversa] = true end end |