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 = nil) ⇒ 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.

Borra los cambios en el modelo causados por la operación táctil.

Parámetros:

  • Campo (Símbolo) (valor por defecto: nil)

    El nombre de un campo adicional para actualizar.



89
90
91
92
93
# Archivo 'lib/mongoid/touchable.rb', línea 89

def _clear_touch_updates(Campo = nulo)
  delete_change(:updated_at)
  delete_change(Campo) si Campo
  _parent._clear_touch_updates si _touchable_parent?
end

#_recolectar_actualizaciones_de_táctil(ahora, campo = nil) ⇒ Hash<String, Time>

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.

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) (valor por defecto: nil)

    El nombre de un campo adicional para actualizar.

Devuelve:

  • (Hash<String, Time>)

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



71
72
73
74
75
76
77
78
79
80
81
82
# Archivo 'lib/mongoid/touchable.rb', línea 71

def _gather_touch_updates(ahora, Campo = nulo)
  return si ¿Están suprimidos los callbacks táctiles?

  Campo = database_field_name(Campo)

  write_attribute(:updated_at, ahora) si respond_to?(:updated_at=)
  write_attribute(Campo, ahora) si Campo.¿presente?

  toques = _extract_touches_from_atomic_sets(Campo) || {}
  toques.¡Actualizar!(_parent._gather_touch_updates(ahora) || {}) si _touchable_parent?
  toques
end

#_ejecutar_touch_callbacks_from_rootObjeto

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.

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.



100
101
102
103
104
105
# Archivo 'lib/mongoid/touchable.rb', línea 100

def ejecutar
  return si ¿Están suprimidos los callbacks táctiles?

  _parent.ejecutar si _touchable_parent?
  run_callbacks(tocar)
end

#_touchable_parent?Booleano

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 si el elemento principal existe y se puede tocar.

Devuelve:



110
111
112
# Archivo 'lib/mongoid/touchable.rb', línea 110

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

#suppress_touch_callbacks(&block) ⇒ Object

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.

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 { ... }


18
19
20
# Archivo 'lib/mongoid/touchable.rb', línea 18

def suprimir_callbacks_táctiles(&bloque)
  Tocable.suprimir_callbacks_táctiles(sí mismo.clase.Nombre, &bloque)
end

#touch(campo = nil) ⇒ true/false

Nota:

Esto no generará automáticamente asociaciones si esas opciones están configuradas.

Toca el documento, actualizando su marca temporal updated_at y, opcionalmente, el campo proporcionado a la hora actual. Si existen asociaciones belongs_to con una opción de actualización, también se actualizarán.

Ejemplos:

Actualiza el timestamp updated_at.

document.touch

Actualiza las marcas de tiempo updated_at y proporcionadas.

document.touch(:audited)

Parámetros:

  • Campo (Símbolo) (valor por defecto: nil)

    El nombre de un campo adicional para actualizar.

Devuelve:

  • (true/false)

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



47
48
49
50
51
52
53
54
55
56
57
58
59
# Archivo 'lib/mongoid/touchable.rb', línea 47

def toque(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
  asegurar
    _clear_touch_updates(Campo)
  end

  true
end

#touch_callbacks_suppressed?true | false

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.

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.



28
29
30
# Archivo 'lib/mongoid/touchable.rb', línea 28

def ¿Están suprimidos los callbacks táctiles?
  Tocable.¿Están suprimidos los callbacks táctiles?(sí mismo.clase.Nombre)
end