Módulo: Mongoid::Changeable
Overview
Define el comportamiento para el seguimiento de cambios.
Definido bajo Namespace
Modules: ClassMethods clase: 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>
Obtener los atributos modificados del documento.
-
#¿cambiado? ⇒ true | false
¿El documento ha cambiado?.
-
#changed_attributes ⇒ Hash<String, Object>
Obtenha los cambios de atributos.
-
#changes ⇒ Hash<string, arreglo<objeto, objeto> ] Los cambios.
Obtener todos los cambios en el documento.
-
#¿children_changed? ⇒ true | false
¿Se ha producido algún cambio en algún documento incrustado de este documento?
-
#¡children_may_have_changed! ⇒ 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
Remover 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 la última guardada.
-
#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
#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.
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 |
#changed ⇒ arreglo<String>
Obtener los atributos modificados del 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 ¿Cambiado? Cambios.values.any? { |val| val } || children_changed? 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.
Obtener todos los cambios en el 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 |
#children_changed? ⇒ true | false
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 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_changes ⇒ Object
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.
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
Remover un cambio del hash de atributos alterados. Utilizado por los actualizadores atómicos de campo único.
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.
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.
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 |
#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| 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.
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 |