Módulo: Mongoid::Association::Referenced::Syncable
- Incluido en:
- Mongoid::Association
- Definido en:
- lib/mongoid/asociación/referenciado/sincronizable.rb
Overview
Este módulo gestiona el comportamiento para la sincronización de claves externas entre ambas partes de una asociación de muchos a muchos.
Definido bajo Namespace
Modules: ClassMethods
Resumen del método de instancia colapsar
-
#_syncable?(asociación) ⇒ verdadero | falso
¿Es posible sincronizar el documento en el lado inverso? Esto es solo si la clave ha cambiado y los enlaces de asociación no se han ejecutado.
-
#_synced ⇒ Hash
Obtén las claves externas sincronizadas.
-
#_sincronizado?(foreign_key) ⇒ true | false
¿Se ha sincronizado el documento con la clave externa?
-
#remove_inverse_keys(asociación) ⇒ Objeto
Actualiza las claves inversas al destruir.
-
#update_inverse_keys(association) ⇒ Objeto
Actualizar las claves inversas para la relación.
Detalles del método de instancia
#_syncronizable?(association) ⇒ true | false
¿Es posible sincronizar el documento en el lado inverso? Esto es solo si la clave ha cambiado y los enlaces de asociación no se han ejecutado.
21 22 23 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 21 def _syncable?(asociación) !sincronizar?(asociación.foreign_key) && enviar(asociación.foreign_key_check) end |
#_synced ⇒ Hash
Obtén las claves externas sincronizadas.
31 32 33 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 31 def _sincronizado @_synced ||= {} end |
#_sincronizado?(foreign_key) ⇒ verdadero | falso
¿Se ha sincronizado el documento para la clave foránea?
43 44 45 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 43 def sincronizar?(foreign_key) !!_sincronizado[foreign_key] end |
#remove_inverse_keys(association) ⇒ Object
Actualiza las claves inversas al destruir.
55 56 57 58 59 60 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 55 def remove_inverse_keys(asociación) foreign_keys = enviar(asociación.foreign_key) a menos que foreign_keys.nil? || foreign_keys.¿vacío? asociación.criterios(sí mismo, foreign_keys).tirar(asociación.clave foránea inversa => _id) end end |
#update_inverse_keys(asociación) ⇒ objeto
Actualizar las claves inversas para la relació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 previous_changes.has_key?(asociación.foreign_key) antiguo, Nuevo = previous_changes[asociación.foreign_key] agrega, subtítulos = Nuevo - (antiguo || []), (antiguo || []) - Nuevo # Si estamos guardando automáticamente, no queremos que se añada un duplicado - el # $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 menos que agrega.¿vacío? asociación.criterios(sí mismo, agrega)..Añadir a conjunto(asociación.clave foránea inversa => _id) end a menos que subtítulos.¿vacío? asociación.criterios(sí mismo, subtítulos)..tirar(asociación.clave foránea inversa => _id) end end end |