Módulo: Mongoid::Asociación::Referenciado::Autoguardado
- Ampliado por:
- ActiveSupport::Concern
- Incluido en:
- Mongoid::Association
- Definido en:
- lib/mongoid/association/referenced/auto_save.rb
Overview
El módulo Mixin incluido en Mongoid::Document agrega la capacidad de guardar automáticamente documentos del lado opuesto en asociaciones referenciadas al guardar el documento sujeto.
Resumen del método de clase colapsar
-
.define_autosave!(association) ⇒ Class
Define el método de autoguardado en la clase propietaria de una asociación para un objeto asociado.
Resumen del método de instancia colapsar
-
#__autosaving__ ⇒ Object
Comience con el guardado automático asociado.
-
#autosaved? ⇒ true | false
Se utiliza para evitar bucles infinitos en los guardados automáticos asociados.
-
#changed_for_autosave?(doc, seen = Set.new) ⇒ true | false
Verifica si hay cambios para el guardado automático.
Detalles del método de clase
.define_autosave!(asociación) ⇒ Clase
Define el método de autoguardado en la clase propietaria de una asociación para un objeto asociado.
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# Archivo 'lib/mongoid/association/referenced/auto_save.rb', línea 62 def sí mismo.define_autosave!(asociación) asociación.clase_inversa.tocar hacer |klass| save_method = :"autosave_documents_for_#{asociación.Nombre}" klass.enviar(define_method, save_method) hacer si before_callback_halted? sí mismo.antes_de_detenerse_labllamada = false else __autosaving__ hacer si assoc_value = ivar(asociación.Nombre) Arreglo(assoc_value).cada hacer |doc| Next a menos que changed_for_autosave?(doc) pc = doc.¿persistence_context? ? doc.persistence_context : persistence_context.for_child(doc) doc.con(pc) hacer |d| d.guardar end end end end end end klass.after_persist_parent save_method, a menos que: :autosaved? end end |
Detalles del método de instancia
#__autosaving__ ⇒ Object
Comience con el guardado automático asociado.
26 27 28 29 30 31 |
# Archivo 'lib/mongoid/association/referenced/auto_save.rb', línea 26 def __autosaving__ Con hilo.begin_autosave(sí mismo) rendimiento asegurar Con hilo.exit_autosave(sí mismo) end |
#autosaved? ⇒ true | false
Se utiliza para evitar bucles infinitos en los guardados automáticos asociados.
18 19 20 |
# Archivo 'lib/mongoid/association/referenced/auto_save.rb', línea 18 def ¿guardado automáticamente? Con hilo.¿guardado automáticamente?(sí mismo) end |
#cambiado_por_autoguardado?(doc, visto = Set.nuevo) ⇒ true | false
Verifique si hay cambios para el guardado automático. Retorna verdadero si el document es nuevo, ha cambiado o está marcado para su destrucción, o si algún hijo referenciado en memoria con autosave: true satisface recursivamente la misma condición.
El conjunto visto previene la recursión infinita cuando las asociaciones de autoguardado forman un ciclo (por ejemplo, un belongs_to con autosave: true cuyo destino tiene un has_many con autosave: true que apunta de regreso).
46 47 48 49 50 51 |
# Archivo 'lib/mongoid/association/referenced/auto_save.rb', línea 46 def changed_for_autosave?(doc, visto = Configura.Nuevo) return false a menos que visto.add?(doc) doc.nuevo_registro? || doc.¿Cambiado? || doc.marcado_para_destrucción? || autosave_children_changed?(doc, visto) end |