Módulo: Mongoid::Association::Referenced::AutoSave

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

Resumen del método de instancia colapsar

Detalles del método de clase

.define_autosave!(asociación) ⇒ Clase

Defina el método de autoguardado en la clase propietaria de una asociación para un objeto asociado.

Ejemplos:

Define el método de guardado automático:

Association::Referenced::Autosave.define_autosave!(association)

Parámetros:

Devuelve:

  • (Clase) -

    La clase de propietario de la asociación.



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# Archivo 'lib/mongoid/association/referenced/auto_save.rb', línea 53

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_método, 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|
              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.

Ejemplos:

Begin autosave.

document.__autosaving__


28
29
30
31
32
33
# Archivo 'lib/mongoid/association/referenced/auto_save.rb', línea 28

def __autosaving__
  Compacto.begin_autosave(sí mismo)
  rendimiento
asegurar
  Compacto.exit_autosave(sí mismo)
end

#¿guardado automáticamente?verdadero | falso

Se utiliza para evitar bucles infinitos en los guardados automáticos asociados.

Ejemplos:

¿Se guarda automáticamente el documento?

document.autosaved?

Devuelve:

  • (true | false)

    ¿El documento ya se guardó automáticamente?



20
21
22
# Archivo 'lib/mongoid/association/referenced/auto_save.rb', línea 20

def ¿guardado automáticamente?
  Compacto.¿guardado automáticamente?(sí mismo)
end

#¿cambiado_para_guardado_automático?(doc) ⇒ Booleano

Verificar si hay cambios para el guardado automático

document.changed_for_autosave?

Ejemplos:

Retorna verdadero si hay cambios en sí mismo o en

autosaved associations.

Devuelve:



40
41
42
# Archivo 'lib/mongoid/association/referenced/auto_save.rb', línea 40

def changed_for_autosave?(doc)
  doc.nuevo_registro? || doc.¿cambió? || doc.marcado_para_destrucción?
end