Módulo: Mongoid::Touchable::InstanceMethods
- Incluido en:
- Documento
- Definido en:
- lib/mongoid/touchable.rb
Overview
Reestructurar usando ActiveSupport::Concern
Se usa para proporcionar la funcionalidad de mixin.
Resumen del método de instancia colapsar
-
#_clear_touch_updates(campo = nulo) ⇒ Objeto
privado
Borra los cambios en el modelo provocados por la operación táctil.
-
#_gather_touch_updates(ahora, campo = nil) ⇒ Hash<String, Time>
privado
Establece recursivamente los campos interactivos en el documento actual y en cada uno de sus padres, incluido el nodo raíz.
-
#_run_touch_callbacks_from_root ⇒ Objeto
privado
Ejecuta recursivamente los callbacks :touch para el documento y sus padres, comenzando con el documento raíz y propagándose a través de cada documento hijo sucesivo.
-
#_touchable_parent? ⇒ Booleano
privado
Indica si el elemento principal existe y se puede tocar.
-
#suppress_touch_callbacks ⇒ objeto
privado
Suprime la invocación de callbacks táctiles, para la clase que incluye este módulo, durante la duración del bloque.
-
#touch(campo = nil) ⇒ true/false
Toca el documento, actualizando efectivamente su marca de tiempo actualizada y, opcionalmente, el campo proporcionado a la hora actual.
-
#touch_callbacks_suppressed? ⇒ true | false
privado
Consulta si las funciones de retorno táctiles están siendo suprimidas para la clase que incluye este módulo.
Detalles del método de instancia
#_clear_touch_updates(campo = nulo) ⇒ 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.
Borra los cambios en el modelo provocados por la operación táctil.
93 94 95 96 97 |
# Archivo 'lib/mongoid/touchable.rb', línea 93 def _clear_touch_updates(Campo = nulo) eliminar_cambio(:updated_at) eliminar_cambio(Campo) si Campo _parent._clear_touch_updates si ¿_padre_tocable? end |
#_gather_touch_updates(ahora, campo = nulo) ⇒ Hash<String, Time>
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Establece de manera recursiva los campos tocables en el documento actual y en cada uno de sus padres, incluido el nodo raíz. Devuelve las operaciones atómicas combinadas $set que se deben realizar en el documento raíz.
75 76 77 78 79 80 81 82 83 84 85 86 |
# Archivo 'lib/mongoid/touchable.rb', línea 75 def _gather_touch_updates(ahora, Campo = nulo) return si ¿Se suprimieron las devoluciones de llamadas táctiles? Campo = database_field_name(Campo) write_attribute(:updated_at, ahora) si respond_to?("actualizado_en=") write_attribute(Campo, ahora) si Campo.¿presente? toques = _extract_touches_from_atomic_sets(Campo) || {} toques.¡unir!(_parent._gather_touch_updates(ahora) || {}) si ¿_padre_tocable? toques end |
#_run_touch_callbacks_from_root ⇒ 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.
Ejecuta recursivamente los callbacks :touch para el documento y sus padres, comenzando con el documento raíz y propagándose a través de cada documento hijo sucesivo.
104 105 106 107 108 |
# Archivo 'lib/mongoid/touchable.rb', línea 104 def _ejecutar_devoluciones_de_llamadas_táctiles_desde_la_raíz return si ¿Se suprimieron las devoluciones de llamadas táctiles? _parent._ejecutar_devoluciones_de_llamadas_táctiles_desde_la_raíz si ¿_padre_tocable? run_callbacks(:tocar) end |
#_touchable_parent? ⇒ Booleano
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 si el elemento principal existe y se puede tocar.
113 114 115 |
# Archivo 'lib/mongoid/touchable.rb', línea 113 def ¿_padre_tocable? _parent && _association&.asociación inversa&.¿tocable? end |
#suppress_touch_callbacks ⇒ Object
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Suprime la invocación de callbacks táctiles, para la clase que incluye este módulo, durante la duración del bloque.
22 23 24 |
# Archivo 'lib/mongoid/touchable.rb', línea 22 def suprimir_devoluciones_de_llamadas_táctiles Tocable.suprimir_devoluciones_de_llamadas_táctiles(sí mismo.clase.Nombre) { rendimiento } end |
#touch(campo = nil) ⇒ true/false
Esto no generará automáticamente asociaciones si esas opciones están configuradas.
Al tocar el documento, se actualiza su marca de tiempo "update_at" y, opcionalmente, el campo proporcionado a la hora actual. Si existen asociaciones "pertenence_to" con una opción táctil, también se actualizarán.
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# Archivo 'lib/mongoid/touchable.rb', línea 51 def contacto(Campo = nulo) return false si _root.nuevo_registro? begin toques = _gather_touch_updates(Tiempo.Actual, Campo) _root.enviar(persistencia_operaciones_atómicas, '$set' => toques) si toques.¿presente? _ejecutar_devoluciones_de_llamadas_táctiles_desde_la_raíz asegurar _clear_touch_updates(Campo) end true end |
#touch_callbacks_suppressed? ⇒ true | false
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Consulta si las funciones de retorno táctiles están siendo suprimidas para la clase que incluye este módulo.
32 33 34 |
# Archivo 'lib/mongoid/touchable.rb', línea 32 def ¿Se suprimieron las devoluciones de llamadas táctiles? Tocable.¿Se suprimieron las devoluciones de llamadas táctiles?(sí mismo.clase.Nombre) end |