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

Ampliado por:
ActiveSupport::Preocupación
Incluido en:
Mongoid::Asociación
Definido en:
lib/mongoid/asociación/referenciado/auto_save.rb

Overview

Módulo Mixin incluido en Mongoid::Document que agrega la capacidad de guardar automáticamente documentos del lado opuesto en asociaciones referenciadas al guardar el documento en cuestión.

Colapso delresumen del método de clase

Colapso del resumen del método de instancia

Detalles del método de clase

.define_autosave!(asociación) ⇒ Clase

Define el método de guardado automático 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 propietaria 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 yo.define_autosave!(asociación)
  asociación.clase inversa.grifo hacer |klass|
    método de guardado = :"guardar_automáticamente_documentos_para_#{asociación.Nombre}"
    klass.Enviar(:define_método, método de guardado) hacer
      Si before_callback_halted?
        yo.antes de que se detenga la devolución de llamada = false
      else
        __autosaving__ hacer
          Si assoc_value = ivar(asociación.Nombre)
            Arreglo(assoc_value).cada hacer |doc|
              pc = doc.¿contexto_de_persistencia? ? doc.contexto de persistencia : contexto de persistencia.para_niño(doc)
              doc.con(pc) hacer |d|
                d.guardar
              end
            end
          end
        end
      end
    end
    klass.after_persist_parent método de guardado, a menos que: :¿guardado automáticamente?
  end
end

Detalles del método de instancia

#__autosaving__Object

Iniciar 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(yo)
  rendimiento
asegurar
  Compacto.exit_autosave(yo)
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:

  • (verdadero | falso)

    ¿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?(yo)
end

#¿cambiado_para_guardado_automático?(doc) ⇒ Booleano

Comprueba si hay cambios para el guardado automático

document.changed_for_autosave?

Ejemplos:

Devuelve verdadero si hay cambios en uno 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_la_destrucción?
end