Módulo: Mongoid::Touchable::InstanceMethods

Incluído em:
Documento
Definido em:
lib/mongoid/tocable.rb

Visão geral

TODO:

Refatorar usando ActiveSupport::Concern

Usado para fornecer funcionalidade de combinação.

Recolhimento do Resumo do método de instância

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.

Parâmetros:

  • Campo (Símbolo) (padrão para: nil)

    O nome de um campo adicional a ser atualizado.



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 .

Parâmetros:

  • agora (Tempo)

    O carimbo de data/hora usado para sincronizar a hora tocada.

  • Campo (Símbolo) (padrão para: nil)

    O nome de um campo adicional a ser atualizado.

Retorna:

  • (Hash <string, Tempo>)

    As operações de toque a serem executadas como um $set atômico.



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.

Retorna:



113
114
115
# Arquivo 'lib/mongoid/toqueable.rb', linha 113

def _tocável_parent?
  _parent && _association&.inverse_association&.tocável?
end

#suprime_toque_callbacksObjeto

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.

Exemplos:

Supressão de chamada de resposta por toque em documentos de pessoa:

person.suppress_touch_callbacks { ... }


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

Observação:

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.

Exemplos:

Atualize o carimbo de data/hora updated_at.

document.touch

Atualize os registros de data/hora updated_at e fornecidos.

document.touch(:audited)

Parâmetros:

  • Campo (Símbolo) (padrão para: nil)

    O nome de um campo adicional a ser atualizado.

Retorna:

  • (verdadeiro/falso)

    false se o documento for new_record caso contrário true.



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.

Retorna:

  • (verdadeiro | falso)

    Se as chamada de resposta por toque são suprimidas.



32
33
34
# Arquivo 'lib/mongoid/toqueable.rb', linha 32

def toque_callbacks_suppressed?
  Tocável.toque_callbacks_suppressed?(auto.classe.name)
end