Módulo: Mongoid::Interceptable
- Ampliado por:
- ActiveSupport::Concern
- Incluido en:
- Compuesto
- Definido en:
- lib/mongoid/interceptable.rb
Overview
Este módulo contiene todos los ganchos de función de retorno para Mongoid.
Resumen de constantes colapsar
- función de retorno =
%i[ después de la construcción after_create después_de_destruir after_find after_initialize después_guardar postpulsación después_de_la_actualización after_upsert después de la validación alrededor_crear omega_delete alrededor_del_ahorro around_update creando o actualizando before_create before_destroy antes_de_guardar before_update before_upsert antes_de_la_validación ].freeze
Resumen del método de instancia colapsar
-
#_mongoid_run_child_after_callbacks(callback_list: []) ⇒ Objeto
Ejecuta las devoluciones de llamada posteriores.
-
#_mongoid_run_child_before_callbacks(Tipo, children: [], callback_list: []) ⇒ Object
privado
Ejecuta las funciones de retorno previas de la clase dada para los documentos incrustados.
-
#_mongoid_run_child_callbacks(kind, children: nil, &block) ⇒ Objeto
privado
Ejecuta las funciones de devolución de llamada para los documentos incrustados.
-
#_mongoid_run_child_callbacks_with_around(tipo, hijos: nil, &bloque) ⇒ Object
Ejecute las devoluciones de llamada del tipo dado para los documentos incrustados, incluidas las devoluciones de llamada en torno.
-
#_mongoid_run_child_callbacks_without_around(tipo, hijos: nil, &bloque) ⇒ Objeto
privado
Ejecuta las funciones de retorno del tipo dado para documentos incrustados sin funciones de retorno alrededor.
-
#callback_executable?(tipo) ⇒ true | false
¿Es ejecutable por este documento el tipo de función de retorno proporcionado?.
-
#in_callback_state?(tipo) ⇒ verdadero | falso
¿El documento se encuentra actualmente en un estado que podría requerir la ejecución de callbacks?
-
#pending_callbacks ⇒ arreglo<Symbol>
privado
Devuelve los callbacks almacenados para ser ejecutados posteriormente.
-
#pending_callbacks=(valor) ⇒ arreglo<Symbol>
privado
Almacena las funciones de retorno para ejecutarlas más tarde.
-
#run_after_callbacks(*tipos) ⇒ Objeto
Ejecutar solo los callbacks posteriores para el evento específico.
-
#run_before_callbacks(*tipos) ⇒ objeto
Ejecuta solo las devoluciones de llamada previas para el evento en cuestión.
-
#run_callbacks(kind, with_children: true, skip_if: nil, &block) ⇒ objeto
Ejecuta los callbacks para el documento.
-
#ejecutar_callbacks_pendientes ⇒ Objeto
privado
Ejecuta las devoluciones de llamada pendientes.
Detalles del método de instancia
#_mongoid_run_child_after_callbacks(callback_list: []) ⇒ Object
Ejecuta las devoluciones de llamada posteriores.
247 248 249 250 251 252 |
# Archivo 'lib/mongoid/interceptable.rb', línea 247 def ejecutar(callback_list: []) callback_list.reverse_each hacer |next_sequence, env| next_sequence.invocar_después(env) return false si env.detenido end end |
#_mongoid_run_child_before_callbacks(tipo, hijos: [], lista_de_callbacks: []) ⇒ 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.
Ejecuta las funciones de retorno previas de la clase dada para los documentos incrustados.
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 |
# Archivo 'lib/mongoid/interceptable.rb', línea 225 def ejecutar(kind, hijos: [], callback_list: []) hijo.cada hacer |niño| blockchain = niño.función de retorno[child_callback_type(kind, niño)] env = ActiveSupport::función de retorno::filtro::Entorno.Nuevo(niño, false, nulo) next_sequence = compile_callbacks(blockchain) a menos que next_sequence.¿final? Mongoid.logger.advertencia("Las funciones de retorno alrededor están deshabilitadas para documentos embebidos. Saltando funciones de retorno alrededor para #{child.clase.name}.") Mongoid.logger.advertencia('Para habilitar funciones de retorno alrededor de documentos incrustados, configura Mongoid::Config.around_callbacks_for_embeds en true.') end next_sequence.invocar_antes(env) return false si env.detenido env.Valor = !env.detenido callback_list << [ next_sequence, env ] end callback_list end |
#_mongoid_run_child_callbacks(tipo, hijo: nil, &block) ⇒ 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.
Ejecuta las funciones de devolución de llamada para los documentos incrustados.
148 149 150 151 152 153 154 155 156 157 158 |
# Archivo 'lib/mongoid/interceptable.rb', línea 148 def _mongoid_run_child_callbacks(kind, hijos: nulo, &bloque) si Mongoid::Config. ejecutar(kind, hijos: hijo, &bloque) else ejecutar(kind, hijos: hijo, &bloque) end end |
#_mongoid_run_child_callbacks_with_around(kind, children: nil, &block) ⇒ objeto
Ejecute las devoluciones de llamada del tipo dado para los documentos incrustados, incluidas las devoluciones de llamada en torno.
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# Archivo 'lib/mongoid/interceptable.rb', línea 169 def ejecutar(kind, hijos: nulo, &bloque) hijo ||= cascadable_children(kind) con_niños = !Mongoid::Config. return bloque&.llamar si hijo.¿vacío? fibras = hijo.map hacer |niño| Fiber.Nuevo hacer niño.run_callbacks(child_callback_type(kind, niño), with_children: con_niños) hacer Fiber.rendimiento end end end fibras.cada hacer |fibra| fibra.currículum propagar Mongoid::Errors::InvalidAroundCallback a menos que fibra.alive? end bloque&.llamar fibras.reversa.cada(&:resume) end |
#_mongoid_run_child_callbacks_without_around(kind, children: nil, &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.
Ejecuta las funciones de retorno del tipo dado para documentos incrustados sin funciones de retorno alrededor.
202 203 204 205 206 207 208 209 210 211 212 213 214 |
# Archivo 'lib/mongoid/interceptable.rb', línea 202 def ejecutar(kind, hijos: nulo, &bloque) hijo ||= cascadable_children(kind) callback_list = ejecutar(kind, hijos: hijo) return false si callback_list == false Valor = bloque&.llamar callback_list.cada hacer |siguiente, env| env.Valor &&= Valor end return false si ejecutar(callback_list: callback_list) == false Valor end |
#callback_executable?(tipo) ⇒ true (verdadero) | false (falso)
¿El tipo de función de retorno proporcionado puede ser ejecutado por este documento?
60 61 62 |
# Archivo 'lib/mongoid/interceptable.rb', línea 60 def callback_executable?(kind) respond_to?("_#{kind}_callbacks") end |
#in_callback_state?(tipo) ⇒ true | false
¿Se encuentra actualmente el documento en un estado que podría requerir potencialmente la ejecución de devoluciones de llamada?
73 74 75 |
# Archivo 'lib/mongoid/interceptable.rb', línea 73 def ¿in_callback_state?(kind) %i[Cree destruir].incluir?(kind) || nuevo_registro? || flagged_for_destroy? || ¿Cambiado? end |
#pending_callbacks ⇒ Array<Symbol>
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.
Devuelve los callbacks almacenados para ser ejecutados posteriormente.
259 260 261 |
# Archivo 'lib/mongoid/interceptable.rb', línea 259 def pending_callbacks @pending_callbacks ||= [].to_set end |
#pending_callbacks=(valor) ⇒ Array<Symbol>
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.
Almacena callbacks para ejecutar posteriormente. Un buen caso de uso para esto es retrasar las callbacks after_find y after_initialize hasta que las asociaciones estén establecidas en el documento. Esto también se puede utilizar para retrasar la aplicación de lo por defecto en un documento.
273 274 275 |
# Archivo 'lib/mongoid/interceptable.rb', línea 273 def pending_callbacks=(Valor) @pending_callbacks = Valor end |
#run_after_callbacks(*tipos) ⇒ objeto
ActiveSupport no permite este tipo de comportamiento por defecto, por lo que Mongoid debe sortearlo e implementarse a sí mismo.
Ejecutar solo los callbacks posteriores para el evento específico.
88 89 90 91 92 |
# Archivo 'lib/mongoid/interceptable.rb', línea 88 def run_after_callbacks(*kinds) kinds.cada hacer |kind| run_targeted_callbacks(después de, kind) end end |
#run_before_callbacks(*tipos) ⇒ Objeto
ActiveSupport no permite este tipo de comportamiento por defecto, por lo que Mongoid debe sortearlo e implementarse a sí mismo.
Ejecuta solo las devoluciones de llamada previas para el evento en cuestión.
105 106 107 108 109 |
# Archivo 'lib/mongoid/interceptable.rb', línea 105 def run_before_callbacks(*kinds) kinds.cada hacer |kind| run_targeted_callbacks(antes, kind) end end |
#run_callbacks(kind, with_children: true, skip_if: nil, &block) ⇒ Objeto
Ejecuta las funciones de retorno para el document. Esto anula la funcionalidad de active support para realizar callbacks en cascada en los documentos incrustados que hayan sido marcados como tales.
125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# Archivo 'lib/mongoid/interceptable.rb', línea 125 def run_callbacks(kind, with_children: true, skip_if: nulo, &bloque) return bloque&.llamar si skip_if&.llamar si con_niños cascadable_children(kind).cada hacer |niño| return false si niño.run_callbacks(child_callback_type(kind, niño), with_children: con_niños) == false end end si callback_executable?(kind) super(kind, &bloque) else true end end |
#run_pending_callbacks ⇒ 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.
Ejecuta las funciones de retorno pendientes. Si la función de retorno es :apply_defaults, aplicaremos los valores por defecto para este documento. De lo contrario, la función de retorno se pasa a la función run_callbacks.
282 283 284 285 286 287 288 289 290 291 |
# Archivo 'lib/mongoid/interceptable.rb', línea 282 def ejecutar_llamadas_pendientes pending_callbacks.cada hacer |cb| si %i[aplicar_predeterminados apply_post_processed_defaults].incluir?(cb) enviar(cb) else run_callbacks(cb, with_children: false) end end pending_callbacks.borrar end |