Módulo: Mongoide::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.
Colapso delresumen constante
- DEVOLUCIONES DE LLAMADAS =
[ :after_build, :después_de_crear, :después de destruir, después_de_encontrar, :after_initialize, :after_save, :después del toque, :después de la actualización, :después de insertar, :después de la validación, alrededor_create, alrededor_destruir, alrededor_de_guardar, :alrededor_de_actualizar, :alrededor_insertar, Antes de crear, :antes_de_destruir, :antes_de_guardar, :before_update, Antes de actualizar, :antes_de_la_validación, ].freeze
Resumen del método de instancia colapsar
-
#_mongoid_run_child_after_callbacks(callback_list: []) ⇒ Objeto
Ejecutar las devoluciones de llamadas posteriores.
-
#_mongoid_run_child_before_callbacks(tipo, hijos: [], lista_de_devoluciones_de_llamadas: []) ⇒ Objeto
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) ⇒ verdadero | falso
¿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 potencialmente podría requerir la ejecución de devoluciones de llamadas?
-
#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.
-
#ejecutar_después_de_devoluciones_de_llamadas(*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
Ejecutar las devoluciones de llamadas posteriores.
250 251 252 253 254 255 |
# Archivo 'lib/mongoid/interceptable.rb', línea 250 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 forma parte de una API privada. Debe evitarlo 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.
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 |
# Archivo 'lib/mongoid/interceptable.rb', línea 229 def _mongoid_ejecutar_hijo_antes_de_las_devoluciones_de_llamadas(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::Filtros::Entorno.Nuevo(niño, false, nulo) next_sequence = compile_callbacks(blockchain) a menos que next_sequence.¿final? Mongoid.logger.advertencia("Lasdevoluciones de llamadas están deshabilitadas para documentos incrustados. Se omiten las devoluciones de llamadas para #{child.class.name}. ") Mongoid.logger.advertencia("Para habilitar callbacks alrededor de los documentos incrustados, establece 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, hijos: nulo, &bloque) ⇒ 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 las funciones de devolución de llamada para los documentos incrustados.
153 154 155 156 157 158 159 160 161 162 163 |
# Archivo 'lib/mongoid/interceptable.rb', línea 153 def _mongoid_run_child_callbacks(kind, hijos: nulo, Ybloque) si Mongoid::Config. ejecutar(kind, hijos: hijo, Ybloque) else ejecutar(kind, hijos: hijo, Ybloque) 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.
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# Archivo 'lib/mongoid/interceptable.rb', línea 174 def ejecutar(kind, hijos: nulo, Ybloque) hijo = (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(Y:resume) end |
#_mongoid_run_child_callbacks_without_around(kind, children: nil, &block) ⇒ 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.
Ejecuta las funciones de retorno del tipo dado para documentos incrustados sin funciones de retorno alrededor.
207 208 209 210 211 212 213 214 215 216 217 218 |
# Archivo 'lib/mongoid/interceptable.rb', línea 207 def ejecutar(kind, hijos: nulo, Ybloque) hijo = (hijo || cascadable_children(kind)) callback_list = _mongoid_ejecutar_hijo_antes_de_las_devoluciones_de_llamadas(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?
62 63 64 |
# Archivo 'lib/mongoid/interceptable.rb', línea 62 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?
75 76 77 |
# Archivo 'lib/mongoid/interceptable.rb', línea 75 def ¿en_estado_de_devolución_de_llamada?(kind) [ crear:, :destroy ].incluir?(kind) || nuevo_registro? || flagged_for_destroy? || ¿cambió? end |
#pending_callbacks ⇒ Array<Symbol>
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve los callbacks almacenados para ser ejecutados posteriormente.
262 263 264 |
# Archivo 'lib/mongoid/interceptable.rb', línea 262 def pending_callbacks @devoluciones_de_llamadas_pendientes ||= [].to_set end |
#pending_callbacks=(valor) ⇒ Array<Symbol>
Este método forma parte de una API privada. Debe evitarlo 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.
276 277 278 |
# Archivo 'lib/mongoid/interceptable.rb', línea 276 def pending_callbacks=(Valor) @devoluciones_de_llamadas_pendientes = 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.
90 91 92 93 94 |
# Archivo 'lib/mongoid/interceptable.rb', línea 90 def run_after_callbacks(*kinds) kinds.cada hacer |kind| run_targeted_callbacks(después de, kind) end end |
#ejecutar_antes_de_devoluciones_de_llamadas(*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.
107 108 109 110 111 |
# Archivo 'lib/mongoid/interceptable.rb', línea 107 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 documento. Esta acción reemplaza la funcionalidad de Active para propagar funciones de retorno hacia documentos incrustados que hayan sido marcados de esa forma.
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# Archivo 'lib/mongoid/interceptable.rb', línea 127 def run_callbacks(kind, with_children: true, skip_if: nulo, Ybloque) si skip_if&.llamar return bloque&.llamar end si con_niños cascadable_children(kind).cada hacer |niño| si niño.run_callbacks(child_callback_type(kind, niño), with_children: con_niños) == false return false end end end si callback_executable?(kind) super(kind, Ybloque) else true end end |
#run_pending_callbacks ⇒ 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 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.
285 286 287 288 289 290 291 292 293 294 |
# Archivo 'lib/mongoid/interceptable.rb', línea 285 def ejecutar_llamadas_pendientes pending_callbacks.cada hacer |cb| si [:aplicar_valores_predeterminados, :apply_post_processed_defaults].incluir?(cb) enviar(cb) else sí mismo.run_callbacks(cb, with_children: false) end end pending_callbacks.borrar end |