Módulo: Mongoid::Touchable::InstanceMethods
- Incluído em:
- Documento
- Definido em:
- lib/mongoid/tocable.rb
Visão geral
Refatorar usando ActiveSupport::Concern
Usado para fornecer funcionalidade de combinação.
Recolhimento do Resumo do método de instância
-
#_clear_toque_updates(campo = nil) ➤ Object
privado
Limpa as alterações no modelo causadas pela operação de toque.
-
#_gather_toque_updates( now, campo = nil) ➤ Hash<string, Time>
privado
Define recursivamente campos tocáveis no documento atual e cada um de seus pais, incluindo o nó raiz.
-
#_run_toque_callbacks_from_root ➤ Objeto
privado
Executa recursivamente :toque de chamada de resposta para o documento e seus pais, começando com o documento raiz e passando por cada documento filho sucessivo .
-
#_Tocable_parent? ➤ Booleano
privado
Indica se o pai existe e é tocável.
-
#suprime_toque_callbacks ➤ Objeto
privado
Suprime a invocação de chamada de resposta por toque, para a classe que inclui esse módulo, durante a duração do bloco.
-
#toque(campo = nil) ➤ verdadeiro/falso
Toque no documento, na verdade, atualizando seu Updated_at timestamp e, opcionalmente, o campo fornecido para a hora atual.
-
#toque_callbacks_suppressed? ➤ verdadeiro | false
privado
Consulta se os retornos de chamada por toque estão sendo suprimidos para a classe que inclui este módulo.
Detalhes do método de instância
#_clear_toque_updates(campo = nil) ➤ Object
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.
Limpa as alterações no modelo causadas pela operação de toque.
93 94 95 96 97 |
# Arquivo 'lib/mongoid/toqueable.rb', linha 93 def _clear_touch_updates(Campo = nada) remove_change(:updated_at) remove_change(Campo) se Campo _parent._clear_touch_updates se _tocável_parent? end |
#_gather_toque_updates( now, campo = nil) ➤ Hash<string, Time>
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.
Define recursivamente campos tocáveis no documento atual e cada um de seus pais, incluindo o nó raiz. Retorna as operações $set atômicas combinadas a serem executadas no documento raiz .
75 76 77 78 79 80 81 82 83 84 85 86 |
# Arquivo 'lib/mongoid/toqueable.rb', linha 75 def _gather_touch_updates(agora, Campo = nada) Método se toque_callbacks_suppressed? Campo = database_field_name(Campo) write_attribute(:updated_at, agora) se respond_to?("updated_at=") write_attribute(Campo, agora) se Campo toques = _extract_contactes_from_atomic_sets(Campo) || {} toques.mesclar!(_parent._gather_touch_updates(agora) || {}) se _tocável_parent? toques end |
#_run_toque_callbacks_from_root ➤ 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.
Executa recursivamente :toque de chamada de resposta para o documento e seus pais, começando com o documento raiz e passando por cada documento filho sucessivo .
104 105 106 107 108 |
# Arquivo 'lib/mongoid/toqueable.rb', linha 104 def _run_toque_callbacks_from_root Método se toque_callbacks_suppressed? _parent._run_toque_callbacks_from_root se _tocável_parent? run_callbacks(:toque) end |
#_Tocable_parent? ➤ Booleano
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.
Indica se o pai existe e é tocável.
113 114 115 |
# Arquivo 'lib/mongoid/toqueable.rb', linha 113 def _tocável_parent? _parent && _association&.inverse_association&.tocável? end |
#suprime_toque_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.
Suprime a invocação de chamada de resposta por toque, para a classe que inclui esse módulo, durante a duração do bloco.
22 23 24 |
# Arquivo 'lib/mongoid/toqueable.rb', linha 22 def suprime_toque_callbacks Tocável.suprime_toque_callbacks(auto.classe.name) { rendimento } end |
#toque(campo = nil) ➤ verdadeiro/falso
Isso não criará associações automaticamente se essas opções estiverem definidas.
Toque no documento, na verdade, atualizando seu Updated_at timestamp e, opcionalmente, o campo fornecido para a hora atual. Se houver associações requires_to com uma opção de toque, elas também serão atualizadas.
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# Arquivo 'lib/mongoid/toqueable.rb', linha 51 def toque(Campo = nada) Método false se _root.new_record? começar toques = _gather_touch_updates(Hora.Current, Campo) _root.enviar(:persist_atomic_operations, '$set' => toques) se toques.presente? _run_toque_callbacks_from_root garantir _clear_touch_updates(Campo) end true end |
#toque_callbacks_suppressed? ➤ verdadeiro | false
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.
Consulta se os retornos de chamada por toque estão sendo suprimidos para a classe que inclui este módulo.
32 33 34 |
# Arquivo 'lib/mongoid/toqueable.rb', linha 32 def toque_callbacks_suppressed? Tocável.toque_callbacks_suppressed?(auto.classe.name) end |