Módulo: Mongoid::Association::Referenced::Syncable
- Incluido en:
- Mongoid::Association
- Definido en:
- lib/mongoid/association/referenced/syncable.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) ⇒ 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.
-
#_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.
18 19 20 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 18 def _syncable?(asociación) !sincronizar?(asociación.foreign_key) && enviar(asociación.foreign_key_check) end |
#_synced ⇒ Hash
Obtén las claves externas sincronizadas.
28 29 30 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 28 def sincronizar @_synced ||= {} end |
#_sincronizado?(foreign_key) ⇒ verdadero | falso
¿Se ha sincronizado el documento para la clave foránea?
40 41 42 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 40 def sincronizar?(foreign_key) !!sincronizar[foreign_key] end |
#remove_inverse_keys(association) ⇒ Object
Actualiza las claves inversas al destruir.
52 53 54 55 56 57 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 52 def remove_inverse_keys(asociación) foreign_keys = enviar(asociación.foreign_key) return si foreign_keys.nil? || foreign_keys.¿vacío? asociación.criterios(sí mismo, foreign_keys).tirar(asociación.clave foránea inversa => _id) end |
#update_inverse_keys(asociación) ⇒ objeto
Actualizar las claves inversas para la relación.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 67 def update_inverse_keys(asociación) return a menos que 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 # invertir en la función de autoguardado causaría esto. Borramos cada ID de # qué hay en la memoria en caso de una combinación de adición de id 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 return si subtítulos.¿vacío? asociación.criterios(sí mismo, subtítulos)..tirar(asociación.clave foránea inversa => _id) end |