Módulo: Mongoide::Interceptable
- Ampliado por:
- ActiveSupport::Preocupación
- Incluido en:
- Componible
- Definido en:
- lib/mongoid/interceptable.rb
Overview
Este módulo contiene todos los ganchos de devolución de llamada para Mongoid.
Colapso delresumen constante
- DEVOLUCIONES DE LLAMADAS =
[ :después de la construcción, :después de crear, :después de destruir, :después de encontrar, :después de inicializar, :after_save, :después del toque, :después de la actualización, :después de insertar, :después de la validación, :alrededor_crear, :alrededor_destruir, :alrededor_guardar, :alrededor_de_actualizar, :alrededor_insertar, :antes_de_crear, :antes_de_destruir, :antes de guardar, :antes_de_actualizar, :antes de actualizar, :antes_de_la_validación, ].freeze
Colapso del resumen del método de instancia
-
#_mongoid_run_child_after_callbacks(lista_de_devoluciones_de_llamadas: []) ⇒ Objeto
Ejecutar las devoluciones de llamadas posteriores.
-
#_mongoid_run_child_before_callbacks(tipo, hijos: [], lista_de_devoluciones_de_llamadas: []) ⇒ Objeto
privada
Ejecutar las devoluciones de llamadas anteriores del tipo dado para los documentos incrustados.
-
#_mongoid_run_child_callbacks(tipo, hijos: nulo, &bloque) ⇒ Objeto
privada
Ejecute las devoluciones de llamadas para documentos incrustados.
-
#_mongoid_run_child_callbacks_with_around(tipo, hijos: nulo, &bloque) ⇒ Objeto
Ejecutar las devoluciones de llamadas del tipo dado para documentos incrustados, incluidas las devoluciones de llamadas cercanas.
-
#_mongoid_run_child_callbacks_without_around(tipo, hijos: nulo, &bloque) ⇒ Objeto
privada
Ejecutar las devoluciones de llamadas del tipo dado para documentos incrustados sin necesidad de realizar devoluciones de llamadas.
-
#callback_executable?(tipo) ⇒ verdadero | falso
¿El tipo de devolución de llamada proporcionado es ejecutable por este documento?
-
#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?
-
#devoluciones_de_llamadas_pendientes ⇒ Matriz<Símbolo><Symbol>
privada
Devuelve las devoluciones de llamadas almacenadas para ejecutarse más tarde.
-
#pendientes_devoluciones_de_llamadas=(valor) ⇒ Matriz<Símbolo><Symbol>
privada
Almacena devoluciones de llamadas que se ejecutarán más tarde.
-
#ejecutar_después_de_devoluciones_de_llamadas(*tipos) ⇒ Objeto
Ejecute solo las devoluciones de llamadas posteriores para el evento específico.
-
#ejecutar_antes_de_devoluciones_de_llamadas(*tipos) ⇒ Objeto
Ejecute solo las devoluciones de llamadas anteriores para el evento específico.
-
#ejecutar_devoluciones_de_llamadas(tipo, con_hijos: verdadero, omitir_si: nulo, &bloque) ⇒ Objeto
Ejecute las devoluciones de llamadas para el documento.
-
#ejecutar_devoluciones_de_llamadas_pendientes ⇒ Objeto
privada
Ejecutar las devoluciones de llamadas pendientes.
Detalles del método de instancia
#_mongoid_run_child_after_callbacks(lista_de_devoluciones_de_llamadas: []) ⇒ Objeto
Ejecutar las devoluciones de llamadas posteriores.
250 251 252 253 254 255 |
# Archivo 'lib/mongoid/interceptable.rb', línea 250 def _mongoid_run_child_después_de_las_devoluciones_de_llamadas(callback_list: []) lista de devolución de llamada.revertir_cada hacer |siguiente_secuencia, env| siguiente_secuencia.invocar_después(env) return false Si env.detenido end end |
#_mongoid_run_child_before_callbacks(tipo, hijos: [], lista_de_devoluciones_de_llamadas: []) ⇒ 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.
Ejecutar las devoluciones de llamadas anteriores del tipo dado 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: []) niños.cada hacer |niño| cadena = niño.__devoluciones de llamadas[tipo de devolución de llamada infantil(kind, niño)] env = Soporte activo::Devoluciones de llamada::Filtros::Entorno.Nuevo(niño, false, nulo) siguiente_secuencia = devoluciones de llamadas de compilación(cadena) a no ser que siguiente_secuencia.¿final? Mongoid.logger.advertir("Lasdevoluciones de llamadas están deshabilitadas para documentos incrustados. Se omiten las devoluciones de llamadas para #{child.class.name}. ") Mongoid.logger.advertir("Parahabilitar las devoluciones de llamadas para documentos incrustados, configure Mongoid::Config.around_callbacks_for_embeds en verdadero.") end siguiente_secuencia.invocar_antes(env) return false Si env.detenido env.valor = !env.detenido lista de devolución de llamada << [siguiente_secuencia, env] end lista de devolución de llamada 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.
Ejecute las devoluciones de llamadas para 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. _mongoid_ejecutar_devoluciones_de_llamadas_secundarias_con_alrededor(kind, hijos: niños, Ybloque) else _mongoid_ejecutar_devoluciones_de_llamadas_secundarias_sin_alrededor(kind, hijos: niños, Ybloque) end end |
#_mongoid_run_child_callbacks_with_around(tipo, hijos: nulo, &bloque) ⇒ Objeto
Ejecutar las devoluciones de llamadas del tipo dado para documentos incrustados, incluidas las devoluciones de llamadas cercanas.
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 _mongoid_ejecutar_devoluciones_de_llamadas_secundarias_con_alrededor(kind, hijos: nulo, Ybloque) niños = (niños || niños en cascada(kind)) con_hijos = !Mongoid::Config. return bloque&.llamada Si niños.¿vacío? fibras = niños.map hacer |niño| Fibra.Nuevo hacer niño.ejecutar_devoluciones de llamadas(tipo de devolución de llamada infantil(kind, niño), con_hijos: con_hijos) hacer Fibra.rendimiento end end end fibras.cada hacer |fibra| fibra.reanudar propagar Mongoid::Errors::Devolución de llamada inválida a no ser que fibra.alive? end bloque&.llamada fibras.marcha atrás.cada(Y:resume) end |
#_mongoid_run_child_callbacks_without_around(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.
Ejecutar las devoluciones de llamadas del tipo dado para documentos incrustados sin necesidad de realizar devoluciones de llamadas.
207 208 209 210 211 212 213 214 215 216 217 218 |
# Archivo 'lib/mongoid/interceptable.rb', línea 207 def _mongoid_ejecutar_devoluciones_de_llamadas_secundarias_sin_alrededor(kind, hijos: nulo, Ybloque) niños = (niños || niños en cascada(kind)) lista de devolución de llamada = _mongoid_ejecutar_hijo_antes_de_las_devoluciones_de_llamadas(kind, hijos: niños) return false Si lista de devolución de llamada == false valor = bloque&.llamada lista de devolución de llamada.cada hacer |_siguiente_secuencia, env| env.valor &&= valor end return false Si _mongoid_run_child_después_de_las_devoluciones_de_llamadas(callback_list: lista de devolución de llamada) == false valor end |
#callback_executable?(tipo) ⇒ verdadero | falso
¿El tipo de devolución de llamada proporcionado es ejecutable por este documento?
62 63 64 |
# Archivo 'lib/mongoid/interceptable.rb', línea 62 def ¿callback_ejecutable?(kind) respond_to?("_#{tipo}_devoluciones de llamada") end |
#in_callback_state?(tipo) ⇒ true | false
¿El documento se encuentra actualmente en un estado que potencialmente podría requerir la ejecución de devoluciones de llamadas?
75 76 77 |
# Archivo 'lib/mongoid/interceptable.rb', línea 75 def ¿en_estado_de_devolución_de_llamada?(kind) [ :crear, :destruir ].¿incluir?(kind) || ¿nuevo_registro? || ¿marcado_para_destruir? || ¿cambió? end |
#devoluciones_de_llamadas_pendientes ⇒ Matriz<Símbolo><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 las devoluciones de llamadas almacenadas para ejecutarse más tarde.
262 263 264 |
# Archivo 'lib/mongoid/interceptable.rb', línea 262 def devoluciones de llamadas pendientes @devoluciones_de_llamadas_pendientes ||= [].to_set end |
#pendientes_devoluciones_de_llamadas=(valor) ⇒ Matriz<Símbolo><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 devoluciones de llamada para su posterior ejecución. Un buen ejemplo de uso es retrasar las devoluciones de llamada after_find y after_initialize hasta que se establezcan las asociaciones en el documento. Esto también se puede usar para retrasar la aplicación de los valores predeterminados en un documento.
276 277 278 |
# Archivo 'lib/mongoid/interceptable.rb', línea 276 def devoluciones_de_llamadas_pendientes=(valor) @devoluciones_de_llamadas_pendientes = valor end |
#ejecutar_después_de_devoluciones_de_llamadas(*tipos) ⇒ Objeto
ActiveSupport no permite este tipo de comportamiento de forma predeterminada, por lo que Mongoid debe solucionarlo e implementarlo por sí mismo.
Ejecute solo las devoluciones de llamadas posteriores para el evento específico.
90 91 92 93 94 |
# Archivo 'lib/mongoid/interceptable.rb', línea 90 def ejecutar_después_de_las_devoluciones_de_llamadas(*kinds) kinds.cada hacer |kind| ejecutar devoluciones de llamadas dirigidas(:después, kind) end end |
#ejecutar_antes_de_devoluciones_de_llamadas(*tipos) ⇒ Objeto
ActiveSupport no permite este tipo de comportamiento de forma predeterminada, por lo que Mongoid debe solucionarlo e implementarlo por sí mismo.
Ejecute solo las devoluciones de llamadas anteriores para el evento específico.
107 108 109 110 111 |
# Archivo 'lib/mongoid/interceptable.rb', línea 107 def ejecutar_antes_de_las_devoluciones_de_llamadas(*kinds) kinds.cada hacer |kind| ejecutar devoluciones de llamadas dirigidas(:antes, kind) end end |
#run_callbacks(kind, with_children: true, skip_if: nil, &block) ⇒ Objeto
Ejecutar las devoluciones de llamada para el documento. Esto anula la funcionalidad del soporte activo para enviar devoluciones de llamada en cascada a los documentos incrustados marcados como tales.
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 ejecutar_devoluciones de llamadas(kind, con_hijos: true, skip_if: nulo, Ybloque) Si skip_if&.llamada return bloque&.llamada end Si con_hijos niños en cascada(kind).cada hacer |niño| Si niño.ejecutar_devoluciones de llamadas(tipo de devolución de llamada infantil(kind, niño), con_hijos: con_hijos) == false return false end end end Si ¿callback_ejecutable?(kind) Super(kind, Ybloque) else true end end |
#ejecutar_devoluciones_de_llamadas_pendientes ⇒ 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 devoluciones de llamadas pendientes devoluciones de llamadas pendientes.cada hacer |cb| Si [:aplicar_valores_predeterminados, :aplicar valores predeterminados posprocesados].¿incluir?(cb) Enviar(cb) else yo.ejecutar_devoluciones de llamadas(cb, con_hijos: false) end end devoluciones de llamadas pendientes.borrar end |