Módulo: Mongoid::Changeable

Ampliado por:
ActiveSupport::Preocupación
Incluido en:
Componible
Definido en:
lib/mongoid/cambiable.rb

Overview

Define el comportamiento para el seguimiento sucio.

Definido en el espacio de nombres

Modules: Métodos de clase Clases: Cualquier cosa

Colapso del resumen del método de instancia

Detalles del método de instancia

#atributo_antes_del_último_guardado(attr) ⇒ Objeto

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

Este método es útil después de las devoluciones de llamadas para obtener el valor original de

an attribute before the save that triggered the callbacks to run.

Parámetros:

  • attr (Símbolo| Cadena)

    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_del_último_guardado(attr)
  attr = nombre_del_campo_de_base_de_datos(attr)
  attributes_before_last_save[attr]
end

#cambiadoArray<String>

Obtenga los atributos modificados para el documento.

Ejemplos:

Obtenga los atributos modificados.

model.changed

Devuelve:

  • (Matriz<String>)

    Los atributos cambiados.



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

def cambiado
  atributos cambiados.claves.Seleccione { |attr| cambio de atributo(attr) }
end

#cambiado?verdadero | falso

¿Ha cambiado el documento?

Ejemplos:

¿Ha cambiado el documento?

model.changed?

Devuelve:

  • (verdadero | falso)

    Si se modifica el documento.



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

def ¿cambió?
  cambios.values.any? { |val| val } || ¿Los niños han cambiado?
end

#atributos_cambiadosHash<Cadena, Objeto>

Obtener los cambios de atributos.

Ejemplos:

Obtener los cambios de atributos.

model.changed_attributes

Devuelve:

  • (Hash<Cadena, Objeto>)

    El atributo cambia.



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

def atributos cambiados
  @atributos_cambiados ||= {}
end

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

Obtenga todos los cambios del documento.

Ejemplos:

Obtenga 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.cada_con_objeto({}) hacer |attr, cambios|
    cambio = cambio de atributo(attr)
    cambios[attr] = cambio Si cambio
  end.con_acceso_indiferente
end

#niños_cambiados?verdadero | falso

Nota:

Esto intencionalmente sólo considera a los niños y no a los descendientes.

¿Han cambiado algunos documentos secundarios (documentos incrustados) de este documento?

Devuelve:

  • (verdadero | falso)

    Si algún niño ha cambiado.



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

def ¿Los niños han cambiado?
  @los_niños_pueden_haber_cambiado || _niños.any?(Y:¿cambió?)
end

#¡Los niños pueden haber cambiado!Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Indica que los hijos de este documento pueden haber cambiado y deben verificarse cuando se valide el documento.



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

def ¡Los niños pueden haber cambiado!
  @los_niños_pueden_haber_cambiado = true
end

#mover_cambiosObjeto

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

Esto desarmará la matriz de hijos memorizada, establecerá el indicador de nuevo registro en falso, establecerá el documento como validado y moverá los cambios sucios.

Ejemplos:

Mover los cambios al anterior.

person.move_changes


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

def mover_cambios
  @cambios_antes_del_último_guardado = @cambios_anteriores
  @cambios_anteriores = cambios
  @atributos_antes_del_último_guardado = @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 conservado un documento.

Ejemplos:

Manejar la persistencia de publicaciones.

document.post_persist


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

def post_persist
  restablecer_descendientes_persistentes
  restablecer atributos antes de la conversión de tipo
  mover_cambios
end

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

Obtener los cambios anteriores en el documento.

Ejemplos:

Obtener los cambios anteriores.

model.previous_changes

Devuelve:

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

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



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

def cambios_anteriores
  @cambios_anteriores ||= {}
end

#remove_change(name) ⇒ objeto

Eliminar un cambio del hash de atributos sucios. Usado por los actualizadores atómicos de un solo campo.

Ejemplos:

Eliminar un cambio marcado.

model.remove_change(:field)

Parámetros:

  • Nombre (Símbolo| Cadena)

    El nombre del campo.



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

def eliminar_cambio(Nombre)
  atributos cambiados.borrar(Nombre.a_s)
end

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

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

Parámetros:

  • attr (Símbolo| Cadena)

    El nombre del atributo.

Devuelve:

  • (Array<Object> | nil)

    Si se modificó el atributo, devuelve una matriz que contiene el valor original y el valor guardado, de lo contrario, nulo.



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

def saved_change_to_attribute(attr)
  attr = nombre_del_campo_de_base_de_datos(attr)
  cambios_anteriores[attr]
end

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

Devuelve si este atributo cambió durante el último guardado.

Este método es útil después de las devoluciones de llamadas, para ver el cambio.

in an attribute during the save that triggered the callbacks to run.

Parámetros:

  • attr (Cadena) -

    El nombre del atributo.

  • de (Objeto) (predeterminado: Utils::PLACEHOLDER)

    El objeto desde el cual se cambió el atributo (opcional).

  • to (Objeto) (predeterminado: Utils::PLACEHOLDER)

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

Devuelve:

  • (verdadero | falso)

    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, desde: Utils::MARCADOR DE POSICIÓN, a: Utils::MARCADOR DE POSICIÓN)
  cambios = saved_change_to_attribute(attr)
  return false a no ser que cambios.is_a?(Arreglo)

  return true Si Utils.placeholder?(de) && Utils.placeholder?(to)
  return cambios.primera == de Si Utils.placeholder?(to)
  return cambios.última == to Si Utils.placeholder?(de)

  cambios.primera == de && cambios.última == to
end

#establecedoresHash

Obtiene todos los valores nuevos para cada uno de los campos modificados, para pasarlos a un modificador $set de MongoDB.

Ejemplos:

Obtenga los configuradores para las actualizaciones atómicas.

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

Devuelve:

  • (Hash)

    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 setters
  mods = {}
  cambios.each_pair hacer |Nombre, cambios|
    siguiente a no ser que cambios

    antiguo, Nuevo = cambios
    Campo = campos[Nombre]
    clave = nombre_del_atributo_atómico(Nombre)
    Si Campo&.¿redimensionable?
      Campo.añadir cambios atómicos(yo, Nombre, clave, mods, Nuevo, antiguo)
    else
      mods[clave] = Nuevo a no ser que puestas atómicas.¿incluir?(clave)
    end
  end
  mods
end

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

Devuelve si este atributo cambiará la próxima vez que guardemos.

Este método es útil en las validaciones y antes de las funciones de retorno para determinar

if the next call to save will change a particular attribute.

Parámetros:

  • attr (Cadena) -

    El nombre del atributo.

  • **kwargs

    Los argumentos de palabras clave opcionales.

Devuelve:

  • (verdadero | falso)

    Si el atributo cambiará la próxima 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