Módulo: Mongoid::Changeable
Overview
Define el comportamiento para el seguimiento de cambios.
Definido bajo Namespace
Modules: ClassMethods Clases: Cualquier cosa
Resumen del método de instancia colapsar
-
#attribute_before_last_save(attr) ⇒ objeto
Devuelve el valor original de un atributo antes del último guardado.
-
#cambiado ⇒ arreglo<String>
Obtenga los atributos modificados para el documento.
-
#cambiado? ⇒ verdadero | falso
¿Ha cambiado el documento?
-
#changed_attributes ⇒ Hash<String, Object>
Obtenha los cambios de atributos.
-
#cambios ⇒ Hash<String, Array<Object, Object> ] Los cambios.
Obtenga todos los cambios del documento.
-
#¿children_changed? ⇒ true | false
¿Se ha producido algún cambio en algún documento incrustado de este documento?
-
#¡Los niños pueden haber cambiado! ⇒ Objeto
privado
Indica que es posible que los hijos de este documento hayan cambiado y que se deben verificar cuando se valide el documento.
-
#mover_cambios ⇒ Objeto
Llame a este método después de guardar para que los cambios puedan realizarse correctamente.
-
#post_persist ⇒ Object
Cosas que deben ejecutarse después de que se haya almacenado un documento.
-
#previous_changes ⇒ Hash<String, Array<Object, Object> ] Los cambios anteriores.
Obtén los cambios anteriores en el documento.
-
#remove_change(nombre) ⇒ Object
Eliminar un cambio del hash de atributos sucios.
-
#saved_change_to_attribute(attr) ⇒ Array<Object> | nil
Devuelve el cambio en un atributo durante el último guardado.
-
#saved_change_to_attribute?(attr, from: Utils::PLACEHOLDER, to: Utils::PLACEHOLDER) ⇒ true | false
Devuelve si este atributo cambió durante el último guardado.
-
#setters ⇒ Hash
Obtiene todos los nuevos valores para cada uno de los campos modificados, que se deben pasar a un modificador $set de MongoDB.
-
#will_save_change_to_attribute?(attr, **kwargs) ⇒ true | false
Devuelve si este atributo cambia la siguiente vez que guardemos.
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.
150 151 152 153 |
# Archivo 'lib/mongoid/changeable.rb', línea 150 def atributo_antes_del_último_guardado(attr) attr = database_field_name(attr) attributes_before_last_save[attr] end |
#changed ⇒ arreglo<String>
Obtenga los atributos modificados para el documento.
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?
32 33 34 |
# Archivo 'lib/mongoid/changeable.rb', línea 32 def ¿cambió? Cambios.values.any? { |val| val } || ¿Los niños han cambiado? end |
#changed_attributes ⇒ Hash<String, Object>
Obtenha los cambios de atributos.
51 52 53 |
# Archivo 'lib/mongoid/changeable.rb', línea 51 def atributos_cambiados @changed_attributes ||= {} end |
#cambios ⇒ Hash<String, Array<Object, Object> ] Los cambios.
Obtenga todos los cambios del documento.
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 |
#niños_cambiados? ⇒ verdadero | falso
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?
41 42 43 |
# Archivo 'lib/mongoid/changeable.rb', línea 41 def ¿Los niños han cambiado? @los_niños_pueden_haber_cambiado || _children.any?(Y¿cambiado?) end |
#children_may_have_changed! ⇒ 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 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_changes ⇒ Object
Llame a este método después de guardar para que los cambios puedan realizarse 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.
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_persist ⇒ objeto
Cosas que deben ejecutarse después de que se haya almacenado un documento.
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_changes ⇒ Hash<String, Array<Object, Object> ] Los cambios anteriores.
Obtén los cambios anteriores en el documento.
101 102 103 |
# Archivo 'lib/mongoid/changeable.rb', línea 101 def previous_changes @previous_changes ||= {} end |
#remove_change(name) ⇒ objeto
Eliminar un cambio del hash de atributos sucios. Usado por los actualizadores atómicos de un solo campo.
112 113 114 |
# Archivo 'lib/mongoid/changeable.rb', línea 112 def eliminar_cambio(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.
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 el último guardado.
Este método es útil en las devoluciones de llamada posteriores para ver el cambio
in an attribute during the save that triggered the callbacks to run.
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, a: 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 |
#asignadores ⇒ Hash
Obtiene todos los nuevos valores para cada uno de los campos modificados, que se deben pasar a un modificador $set de MongoDB.
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| siguiente 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 las validaciones y antes de las funciones de retorno para determinar
if the next call to save will change a particular attribute.
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 |