Módulo: Mongoid::Touchable::InstanceMethods

Incluido en:
Documento
Definido en:
lib/mongoid/touchable.rb

Overview

TODO:

Reestructurar usando ActiveSupport::Concern

Se usa para proporcionar la funcionalidad de mixin.

Resumen del método de instancia colapsar

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.

Parámetros:

  • Campo (Símbolo) (predeterminado: nulo)

    El nombre de un campo adicional para actualizar.



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.

Parámetros:

  • ahora (Time)

    La marca de tiempo utilizada para sincronizar la hora tocada.

  • Campo (Símbolo) (predeterminado: nulo)

    El nombre de un campo adicional para actualizar.

Devuelve:

  • (Hash<String, Time>)

    Las operaciones táctiles a realizar como un $set atómico.



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_rootObjeto

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.

Devuelve:



113
114
115
# Archivo 'lib/mongoid/touchable.rb', línea 113

def ¿_padre_tocable?
  _parent && _association&.asociación inversa&.¿tocable?
end

#suppress_touch_callbacksObject

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.

Ejemplos:

Suprime las funciones de retorno en Person documentos:

person.suppress_touch_callbacks { ... }


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

Nota:

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.

Ejemplos:

Actualice la marca de tiempo updated_at.

document.touch

Actualiza las marcas de tiempo updated_at y proporcionadas.

document.touch(:audited)

Parámetros:

  • Campo (Símbolo) (predeterminado: nulo)

    El nombre de un campo adicional para actualizar.

Devuelve:

  • (true/false)

    falso si el documento es new_record, de lo contrario verdadero.



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.

Devuelve:

  • (true | false)

    Si se suprimen las devoluciones de llamada táctiles.



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