Módulo: Mongoid::Changeable

Ampliado por:
ActiveSupport::Concern
Incluido en:
Compuesto
Definido en:
lib/mongoid/changeable.rb

Overview

Define el comportamiento para el seguimiento de cambios.

Definido bajo Namespace

Modules: ClassMethods clase: Cualquier cosa

Resumen del método de instancia colapsar

Detalles del método de instancia

#attribute_before_last_save(attr) ⇒ objeto

Devuelve el valor original de un atributo antes del último guardado.

Este método es útil en devoluciones de llamada posteriores para obtener el valor original de un atributo antes de que se guarde lo que hizo que se ejecutaran las devoluciones de llamada.

Parámetros:

  • attr (Symbol | string)

    El nombre del atributo.

Devuelve:

  • (objeto)

    Valor del atributo antes del último guardado.



150
151
152
153
# Archivo 'lib/mongoid/changeable.rb', línea 150

def atributo_antes_de_guardar(attr)
  attr = database_field_name(attr)
  attributes_before_last_save[attr]
end

#changedarreglo<String>

Obtener los atributos modificados del documento.

Ejemplos:

Consigue los atributos modificados.

model.changed

Devuelve:

  • (arreglo<String>)

    Los atributos cambiados.



14
15
16
# Archivo 'lib/mongoid/changeable.rb', línea 14

def cambiado
  atributos_cambiados.claves.Seleccionar { |attr| attribute_change(attr) }
end

#¿cambio?true | false

¿Ha cambiado el documento?

Ejemplos:

¿Ha cambiado el documento?

model.changed?

Devuelve:

  • (true | false)

    Si se modifica el documento.



32
33
34
# Archivo 'lib/mongoid/changeable.rb', línea 32

def ¿Cambiado?
  Cambios.values.any? { |val| val } || children_changed?
end

#changed_attributesHash<String, Object>

Obtenha los cambios de atributos.

Ejemplos:

Obtenha los cambios de atributos.

model.changed_attributes

Devuelve:

  • (Hash<String, Object>)

    El/los atributos cambian.



51
52
53
# Archivo 'lib/mongoid/changeable.rb', línea 51

def atributos_cambiados
  @changed_attributes ||= {}
end

#cambiosHash<String, Array<Object, Object> ] Los cambios.

Obtener todos los cambios en el documento.

Ejemplos:

Obtén todos los cambios.

model.changes

Devuelve:

  • (Hash<String, arreglo<objeto, objeto> ] Los cambios.)

    Hash<String, arreglo<objeto, objeto> ] Los cambios.



61
62
63
64
65
66
# Archivo 'lib/mongoid/changeable.rb', línea 61

def Cambios
  cambiado.each_with_object({}) hacer |attr, Cambios|
    cambio = attribute_change(attr)
    Cambios[attr] = cambio si cambio
  end.con_acceso_indiferente
end

#children_changed?true | false

Nota:

Esto intencionalmente solo considera a los hijos y no a los descendientes.

¿Se ha realizado algún cambio en los elementos secundarios (documentos incrustados) de este documento?

Devuelve:

  • (true | false)

    Si algún niño ha cambiado.



41
42
43
# Archivo 'lib/mongoid/changeable.rb', línea 41

def children_changed?
  los niños pueden haber cambiado || _children.any?(&¿cambiado?)
end

#children_may_have_changed!objeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Indica que es posible que los hijos de este documento hayan cambiado y que se deben verificar cuando se valide el documento.



22
23
24
# Archivo 'lib/mongoid/changeable.rb', línea 22

def es posible que los niños hayan cambiado.
  los niños pueden haber cambiado = true
end

#move_changesObject

Llame a este método después de guardar para que los cambios puedan realizarse correctamente.

Esto desactivará el arreglo memorizado de hijos, establecerá el indicador de registro nuevo en falso, marcará el documento como validado y moverá los cambios pendientes.

Ejemplos:

Mueve los cambios a los anteriores.

person.move_changes


75
76
77
78
79
80
81
82
83
# Archivo 'lib/mongoid/changeable.rb', línea 75

def move_changes
  @changes_before_last_save = @previous_changes
  @previous_changes = Cambios
  @attributes_before_last_save = @atributos_anteriores
  @atributos_anteriores = atributos.dup
  los niños pueden haber cambiado = false
  reset_atomic_updates!
  atributos_cambiados.borrar
end

#post_persistobjeto

Cosas que deben ejecutarse después de que se haya almacenado un documento.

Ejemplos:

Gestiona la persistencia de publicaciones.

document.post_persist


89
90
91
92
93
# Archivo 'lib/mongoid/changeable.rb', línea 89

def post_persist
  reset_persisted_descendants
  reset_attributes_before_type_cast
  move_changes
end

#previous_changesHash<String, Array<Object, Object> ] Los cambios anteriores.

Obtén los cambios anteriores en el documento.

Ejemplos:

Obten las modificaciones anteriores.

model.previous_changes

Devuelve:

  • (Hash<String, Array<Object, Object> ] Los cambios anteriores.)

    Hash<String, arreglo<objeto, objeto>> Los cambios anteriores.



101
102
103
# Archivo 'lib/mongoid/changeable.rb', línea 101

def previous_changes
  @previous_changes ||= {}
end

#remove_change(name) ⇒ objeto

Remover un cambio del hash de atributos alterados. Utilizado por los actualizadores atómicos de campo único.

Ejemplos:

Remover un cambio marcado.

model.remove_change(:field)

Parámetros:

  • Nombre (Symbol | string)

    El nombre del campo.



112
113
114
# Archivo 'lib/mongoid/changeable.rb', línea 112

def delete_change(Nombre)
  atributos_cambiados.borrar(Nombre.to_s)
end

#saved_change_to_attribute(attr) ⇒ Array<Object> | nil

Devuelve el cambio en un atributo durante el último guardado.

Parámetros:

  • attr (Symbol | string)

    El nombre del atributo.

Devuelve:

  • (arreglo<Object> | nil)

    Si el atributo ha cambiado, devuelve un arreglo que contiene el valor original y el valor guardado; en caso contrario, devuelve nil.



161
162
163
164
# Archivo 'lib/mongoid/changeable.rb', línea 161

def saved_change_to_attribute(attr)
  attr = database_field_name(attr)
  previous_changes[attr]
end

#saved_change_to_attribute?(attr, from: Utils::PLACEHOLDER, to: Utils::PLACEHOLDER) ⇒ true | false

Devuelve si este atributo cambió durante la última guardada.

Este método es útil en funciones de retorno posteriores para ver el cambio en un atributo durante el guardado que activó que se ejecutaran las funciones de retorno.

Parámetros:

  • attr (string)

    El nombre del atributo.

  • de (objeto) (por defecto: Utils::PLACEHOLDER)

    El objeto del que se cambió el atributo (opcional).

  • to (objeto) (por defecto: Utils::PLACEHOLDER)

    El objeto al que se cambió el atributo (opcional).

Devuelve:

  • (true | false)

    Si el atributo ha cambiado durante el último guardado.



176
177
178
179
180
181
182
183
184
185
# Archivo 'lib/mongoid/changeable.rb', línea 176

def saved_change_to_attribute?(attr, de: Utils::Marcador de posición, para: Utils::Marcador de posición)
  Cambios = saved_change_to_attribute(attr)
  return false a menos que Cambios.is_a?(Arreglo)

  return true si Utils.placeholder?(de) && Utils.placeholder?(to)
  return Cambios.primero == de si Utils.placeholder?(to)
  return Cambios.último == to si Utils.placeholder?(de)

  Cambios.primero == de && Cambios.último == to
end

#asignadoresHash

Obtiene todos los nuevos valores para cada uno de los campos modificados, que se deben pasar a un modificador $set de MongoDB.

Ejemplos:

Obtén los definidores para las actualizaciones atómicas.

person = Person.new(:title => "Sir")
person.title = "Madam"
person.setters # returns { "title" => "Madam" }

Devuelve:

  • (encriptada)

    Un Hash de configuradores atómicos.



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Archivo 'lib/mongoid/changeable.rb', línea 125

def asignadores
  mods = {}
  Cambios.each_pair hacer |Nombre, Cambios|
    Next a menos que Cambios

    antiguo, Nuevo = Cambios
    Campo = Campos[Nombre]
    llave = atomic_attribute_name(Nombre)
    si Campo&.¿redimensionable?
      Campo.add_atomic_changes(sí mismo, Nombre, llave, mods, Nuevo, antiguo)
    else
      mods[llave] = Nuevo a menos que atomic_unsets.incluir?(llave)
    end
  end
  mods
end

#will_save_change_to_attribute?(attr, **kwargs) ⇒ true | false

Devuelve si este atributo cambia la siguiente vez que guardemos.

Este método es útil en validaciones y antes de devoluciones de llamada para determinar si la siguiente llamada para guardar cambiará un atributo en particular.

Parámetros:

  • attr (string)

    El nombre del atributo.

  • **kwargs

    Los argumentos opcionales de palabra clave.

Devuelve:

  • (true | false)

    Si el atributo cambia la siguiente vez que guardemos.



199
200
201
# Archivo 'lib/mongoid/changeable.rb', línea 199

def ¿se_guardará_el_cambio_en_el_atributo?(attr, **kwargs)
  atributo_cambiado?(attr, **kwargs)
end