Módulo: Mongoid::Interceptable
- Estendido por:
- ActiveSupport::Concern
- Incluído em:
- Componível
- Definido em:
- lib/mongoid/interceptable.rb
Visão geral
Este módulo contém todos os ganchos de chamada de resposta de chamada para Mongoid.
Colapsode resumo constante
- REQUESTIS =
%i[ after_build after_create after_destroy after_find after_initialize after_save after_toque after_update after_upsert after_validation near_create near_destroy near_save near_update near_upsert before_create before_destroy before_save before_update before_upsert before_validation ].congelar
Recolhimento do Resumo do método de instância
-
#_mongoid_run_child_after_callbacks(callback_list: []) ⇒ Object
Execute as chamadas de resposta posteriores.
-
#_mongoid_run_child_before_callbacks(tipo, crianças: [], callback_list: []) ➤ Objeto
privado
Execute as chamadas de resposta anteriores de determinado tipo para documentos incorporados.
-
#_mongoid_run_child_callbacks(tipo, filhos: nil, &block) ➤ Objeto
privado
Execute as chamadas de resposta para documentos incorporados.
-
#_mongoid_run_child_callbacks_with_round(tipo, filhos: nil, &block) ➤ Objeto
Execute as chamadas de resposta de determinado tipo para documentos incorporados, inclusive em torno de chamadas de resposta.
-
#_mongoid_run_child_callbacks_without_round(tipo, filhos: nil, &block) ➤ Objeto
privado
Execute as chamadas de resposta de determinado tipo para documentos incorporados sem chamadas de resposta.
-
#callback_executable?(espacial) ➤ verdadeiro | false
O tipo fornecido de chamada de resposta é executável por este documento?
-
#in_callback_state?(espacial) ➤ verdadeiro | false
O documento está atualmente em um estado que poderia exigir a execução de chamadas de resposta?
-
#pending_callbacks ➤ Array<Symbol>
privado
Retorna as chamada de resposta armazenadas para serem executadas posteriormente.
-
#pending_callbacks=(value) ➤ Array<Symbol>
privado
Armazena chamadas de resposta para serem executadas posteriormente.
-
#run_after_callbacks(*tipos) ➤ Objeto
Execute somente as chamadas de resposta posteriores para o evento específico .
-
#run_before_callbacks(*tipos) ➤ Objeto
Execute somente as chamadas anteriores para o evento específico .
-
#run_callbacks(tipo, with_children: true, skip_if: nil, &block) ➤ Objeto
Execute as chamadas de resposta para o documento.
-
#run_pending_callbacks ➤ Objeto
privado
Execute as chamadas de resposta pendentes.
Detalhes do método de instância
#_mongoid_run_child_after_callbacks(callback_list: []) ⇒ Object
Execute as chamadas de resposta posteriores.
247 248 249 250 251 252 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 247 def _mongoid_run_child_after_callbacks(chamada de resposta_lista: []) chamada de resposta_lista.Reverse_each fazer |Next_sequence, env| Next_sequence.invoke_after(env) Método false se env.interrompido end end |
#_mongoid_run_child_before_callbacks(tipo, crianças: [], callback_list: []) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Execute as chamadas de resposta anteriores de determinado tipo para documentos incorporados.
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 225 def _mongoid_run_child_before_callbacks(kind, filhos: [], chamada de resposta_lista: []) crianças.cada fazer |criança| chain = criança.__callbacks[child_callback_type(kind, criança)] env = ActiveSupport::Chamadas de resposta::Filtros::ambiente.Novo(criança, false, nada) Next_sequence = compile_callbacks(chain) a menos que Next_sequence.final? Mongoid.logger.AVISAR("As chamadas de resposta estão desativadas para documentos incorporados. Ignorando chamadas de resposta para #{filho.classe.nome}.") Mongoid.logger.AVISAR(Para ativar as chamadas de resposta para documentos incorporados, defina Mongoid::Config.round_callbacks_for_embeds como true. ') end Next_sequence.invoke_before(env) Método false se env.interrompido env.valor = !env.interrompido chamada de resposta_lista << [ Next_sequence, env ] end chamada de resposta_lista end |
#_mongoid_run_child_callbacks(tipo, filhos: nil, &block) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Execute as chamadas de resposta para documentos incorporados.
148 149 150 151 152 153 154 155 156 157 158 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 148 def _mongoid_run_child_callbacks(kind, filhos: nada, &noum: bloco ; verb: bloquear) se Mongoid::Config. _mongoid_run_child_callbacks_with_round(kind, filhos: crianças, &noum: bloco ; verb: bloquear) mais _mongoid_run_child_callbacks_without_round(kind, filhos: crianças, &noum: bloco ; verb: bloquear) end end |
#_mongoid_run_child_callbacks_with_round(tipo, filhos: nil, &block) ➤ Objeto
Execute as chamadas de resposta de determinado tipo para documentos incorporados, inclusive em torno de chamadas de resposta.
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 169 def _mongoid_run_child_callbacks_with_round(kind, filhos: nada, &noum: bloco ; verb: bloquear) crianças ||= cascadable_children(kind) with_children = !Mongoid::Config. Método noum: bloco ; verb: bloquear&.Chame se crianças.vazio? Fibras = crianças.map fazer |criança| Fibra.Novo fazer criança.run_callbacks(child_callback_type(kind, criança), with_children: with_children) fazer Fibra.rendimento end end end Fibras.cada fazer |Fibra| Fibra.retomar aumentar Mongoid::Errors::InvalidAroundCallback a menos que Fibra.alive? end noum: bloco ; verb: bloquear&.Chame Fibras.reverter.cada(&:resume) end |
#_mongoid_run_child_callbacks_without_round(tipo, filhos: nil, &block) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Execute as chamadas de resposta de determinado tipo para documentos incorporados sem chamadas de resposta.
202 203 204 205 206 207 208 209 210 211 212 213 214 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 202 def _mongoid_run_child_callbacks_without_round(kind, filhos: nada, &noum: bloco ; verb: bloquear) crianças ||= cascadable_children(kind) chamada de resposta_lista = _mongoid_run_child_before_callbacks(kind, filhos: crianças) Método false se chamada de resposta_lista == false valor = noum: bloco ; verb: bloquear&.Chame chamada de resposta_lista.cada fazer |_next_sequence, env| env.valor &&= valor end Método false se _mongoid_run_child_after_callbacks(chamada de resposta_lista: chamada de resposta_lista) == false valor end |
#callback_executable?(espacial) ➤ verdadeiro | false
O tipo fornecido de chamada de resposta de resposta é executável por este documento?
60 61 62 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 60 def callback_executable?(kind) respond_to?("_#{kind}_callbacks") end |
#in_callback_state?(espacial) ➤ verdadeiro | false
O documento está atualmente em um estado que pode exigir a execução de callbacks?
73 74 75 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 73 def in_callback_state?(kind) %i[criar destruir].incluir?(kind) || new_record? || sinalizado_for_destroy? || mudou? end |
#pending_callbacks ➤ Array<Symbol>
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna as chamada de resposta armazenadas para serem executadas posteriormente.
259 260 261 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 259 def pending_callbacks @pending_callbacks ||= [].to_set end |
#pending_callbacks=(value) ➤ Array<Symbol>
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Armazena chamadas de resposta para serem executadas posteriormente. Um bom caso de uso para isso é atrasar os retornos de chamada after_find e after_initialize até que as associações sejam definidas no documento. Isso também pode ser usado para atrasar a aplicação dos padrões em um documento.
273 274 275 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 273 def pending_callbacks=(valor) @pending_callbacks = valor end |
#run_after_callbacks(*tipos) ➤ Objeto
O ActiveSupport não permite esse tipo de comportamento por padrão, então o Mongoid precisa contorná-lo e se implementar.
Execute somente as chamadas de resposta posteriores para o evento específico .
88 89 90 91 92 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 88 def run_after_callbacks(*kinds) kinds.cada fazer |kind| run_targeted_callbacks(:after, kind) end end |
#run_before_callbacks(*tipos) ➤ Objeto
O ActiveSupport não permite esse tipo de comportamento por padrão, então o Mongoid precisa contorná-lo e se implementar.
Execute somente as chamadas anteriores para o evento específico .
105 106 107 108 109 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 105 def run_before_callbacks(*kinds) kinds.cada fazer |kind| run_targeted_callbacks(:before, kind) end end |
#run_callbacks(tipo, with_children: true, skip_if: nil, &block) ➤ Objeto
Execute as chamadas de resposta do document. Isso substitui a funcionalidade do suporte ativo de chamar de resposta em cascata para documentos incorporados que foram sinalizados como tal.
125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 125 def run_callbacks(kind, with_children: true, skip_if: nada, &noum: bloco ; verb: bloquear) Método noum: bloco ; verb: bloquear&.Chame se skip_if&.Chame se with_children cascadable_children(kind).cada fazer |criança| Método false se criança.run_callbacks(child_callback_type(kind, criança), with_children: with_children) == false end end se callback_executable?(kind) super(kind, &noum: bloco ; verb: bloquear) mais true end end |
#run_pending_callbacks ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Execute as chamadas de resposta pendentes. Se a chamada de resposta de resposta for :apply_defaults, aplicaremos os padrões para este documento. Caso contrário, a chamada de resposta de resposta é passada para a função run_callbacks.
282 283 284 285 286 287 288 289 290 291 |
# Arquivo 'lib/mongoid/interceptable.rb', linha 282 def run_pending_callbacks pending_callbacks.cada fazer |cb| se %i[apply_defaults apply_post_processed_defaults].incluir?(cb) enviar(cb) mais run_callbacks(cb, with_children: false) end end pending_callbacks.Limpar end |