Módulo: Mongoid::Touchable::InstanceMethods

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

Overview

TODO:

Reestructurar usando ActiveSupport::Concern

Se utiliza para proporcionar funcionalidad de mezcla.

Colapso del resumen del método de instancia

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(:actualizado_en)
  eliminar_cambio(Campo) Si Campo
  _padre._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<Cadena, Hora>)

    Las operaciones táctiles a realizar como un conjunto 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 = nombre_del_campo_de_base_de_datos(Campo)

  atributo de escritura(:actualizado_en, ahora) Si respond_to?("actualizado_en=")
  atributo de escritura(Campo, ahora) Si Campo.¿presente?

  toques = _extraer_toques_de_conjuntos_atómicos(Campo) || {}
  toques.¡unir!(_padre._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 devoluciones de llamadas :touch para el documento y sus padres, comenzando con el documento raíz y en cascada a través de cada documento secundario 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?
  _padre._ejecutar_devoluciones_de_llamadas_táctiles_desde_la_raíz Si ¿_padre_tocable?
  ejecutar_devoluciones de llamadas(:tocar)
end

#_padre_tocable?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 padre existe y se puede tocar.

Devuelve:



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

def ¿_padre_tocable?
  _padre && _asociación&.asociación inversa&.¿tocable?
end

#suppress_touch_callbacksObjeto

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 devoluciones de llamadas táctiles, para la clase que incluye este módulo, mientras dura el 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(yo.clase.Nombre) { rendimiento }
end

#toque(campo = nulo) ⇒ verdadero/falso

Nota:

Esto no generará asociaciones automáticamente 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

Actualice updated_at y las marcas de tiempo proporcionadas.

document.touch(:audited)

Parámetros:

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

    El nombre de un campo adicional para actualizar.

Devuelve:

  • (verdadero/falso)

    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(:persistir_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?verdadero | falso

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 se están suprimiendo las devoluciones de llamadas táctiles para la clase que incluye este módulo.

Devuelve:

  • (verdadero | falso)

    Si se suprimen las devoluciones de llamadas 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?(yo.clase.Nombre)
end