Módulo: Mongoid::Association::Referenced::Syncable
- Incluido en:
- Mongoid::Asociación
- Definido en:
- lib/mongoid/asociación/referenciado/sincronizable.rb
Overview
Este módulo maneja el comportamiento para sincronizar claves externas entre ambos lados de una asociación de muchos a muchos.
Definido en el espacio de nombres
Modules: Métodos de clase
Colapso del resumen del método de instancia
-
#_syncable?(asociación) ⇒ verdadero | falso
¿Es posible sincronizar el documento en el lado inverso? Esto solo es posible si la clave ha cambiado y no se han ejecutado los enlaces de asociación.
-
#_synced ⇒ Hash
Obtenga las claves externas sincronizadas.
-
#_synced?(clave_foránea) ⇒ verdadero | falso
¿Se ha sincronizado el documento para la clave externa?
-
#remove_inverse_keys(asociación) ⇒ Objeto
Actualiza las claves inversas al destruir.
-
#update_inverse_keys(asociación) ⇒ Objeto
Actualice las claves inversas para la asociación.
Detalles del método de instancia
#_syncable?(asociación) ⇒ verdadero | falso
¿Es posible sincronizar el documento en el lado inverso? Esto solo es posible si la clave ha cambiado y no se han ejecutado los enlaces de asociación.
21 22 23 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 21 def ¿_sincronizable?(asociación) !¿_sincronizado?(asociación.clave externa) && Enviar(asociación.comprobación de clave externa) end |
#_synced ⇒ Hash
Obtenga las claves externas sincronizadas.
31 32 33 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 31 def _sincronizado @_synced ||= {} end |
#_synced?(clave_foránea) ⇒ verdadero | falso
¿Se ha sincronizado el documento para la clave externa?
43 44 45 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 43 def ¿_sincronizado?(clave externa) !!_sincronizado[clave externa] end |
#remove_inverse_keys(asociación) ⇒ Objeto
Actualiza las claves inversas al destruir.
55 56 57 58 59 60 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 55 def eliminar_claves_inversas(asociación) claves externas = Enviar(asociación.clave externa) a no ser que claves externas.nil? || claves externas.¿vacío? asociación.criterios(yo, claves externas).tirar(asociación.clave externa inversa => _id) end end |
#update_inverse_keys(asociación) ⇒ Objeto
Actualice las claves inversas para la asociación.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 70 def update_inverse_keys(asociación) Si cambios_anteriores.has_key?(asociación.clave externa) antiguo, Nuevo = cambios_anteriores[asociación.clave externa] agrega, subs = Nuevo - (antiguo || []), (antiguo || []) - Nuevo # Si guardamos automáticamente, no queremos que se agregue un duplicado. # $addToSet se ejecutaría previamente y luego el $push y $each del # La inversión en el autoguardado causaría esto. Eliminamos cada ID de # ¿Qué hay en la memoria en caso de una combinación de adición de identificación y adición de objeto? # había ocurrido. Si asociación.autosave? Enviar(asociación.Nombre).en_memoria.cada hacer |doc| agrega.delete_one(doc._id) end end a no ser que agrega.¿vacío? asociación.criterios(yo, agrega)..añadir_al_conjunto(asociación.clave externa inversa => _id) end a no ser que subs.¿vacío? asociación.criterios(yo, subs)..tirar(asociación.clave externa inversa => _id) end end end |