Módulo: Mongoid::Changeable

Estendido por:
ActiveSupport::Concern
Incluído em:
Componível
Definido em:
lib/mongoid/changeable.rb

Visão geral

Define o comportamento para rastreamento sujo.

Definido sob namespace

Módulos: Métodos de classe Classes: Qualquer coisa

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#attr_before_last_save(attr) ➤ Objeto

Retorna o valor original de um atributo antes da última gravação.

Este método é útil após as chamadas de resposta para obter o valor original de

an attribute before the save that triggered the callbacks to run.

Parâmetros:

  • atr (Símbolo | string)

    O nome do atributo.

Retorna:

  • (Objeto)

    Valor do atributo antes da última gravação.



141
142
143
144
# Arquivo 'lib/mongoid/changeable.rb', linha 141

def Atributo_before_last_save(atr)
  atr = database_field_name(atr)
  atributos_before_last_save[atr]
end

#changeArray<String>

Obtenha os atributos alterados do documento.

Exemplos:

Obtenha os atributos alterados.

model.changed

Retorna:

  • (Array<String>)

    Os atributos alterados.



14
15
16
# Arquivo 'lib/mongoid/changeable.rb', linha 14

def alterado
  change_attributes.keys.selecione { |atr| attribute_change(atr) }
end

#alterado?verdadeiro | false

O documento mudou?

Exemplos:

O documento mudou?

model.changed?

Retorna:

  • (verdadeiro | falso)

    Se o documento for alterado.



24
25
26
# Arquivo 'lib/mongoid/changeable.rb', linha 24

def mudou?
  Mudanças.values.algum? { |valid| valid } || criancas_alteradas?
end

#change_attributes ➤ Hash<string, Object>

Obtenha as alterações de atributo.

Exemplos:

Obtenha as alterações de atributo.

model.changed_attributes

Retorna:

  • (Hash <string, Objeto >)

    O atributo muda.



43
44
45
# Arquivo 'lib/mongoid/changeable.rb', linha 43

def change_attributes
  @changed_attributes ||= {}
end

#changeHash<string, Array<Object, Object> ] As alterações.

Obtenha todas as alterações do documento.

Exemplos:

Obtenha todas as alterações.

model.changes

Retorna:

  • (Hash <string, Array < Objeto, Objeto> ] As alterações.)

    Hash <string, Array < Objeto, Objeto > ] As alterações.



53
54
55
56
57
58
# Arquivo 'lib/mongoid/changeable.rb', linha 53

def Mudanças
  alterado.cada_com_objeto({}) fazer |atr, Mudanças|
    Mudar = attribute_change(atr)
    Mudanças[atr] = Mudar se Mudar
  end.with_indizer_access
end

#criancas_changed?verdadeiro | false

Observação:

Isso intencionalmente considera apenas filhos e não descendentes.

Mais algum filho (documento incorporado) deste documento foi alterado?

Retorna:

  • (verdadeiro | falso)

    Se algum filho mudou.



33
34
35
# Arquivo 'lib/mongoid/changeable.rb', linha 33

def criancas_alteradas?
  _children.algum?(&:Alterado?)
end

#move_changes ➤ Objeto

Chame esse método após salvar, para que as alterações possam ser alteradas corretamente.

Isso desmarcará a array de filhos memoizados, definirá o novo sinalizador de registro como falso, definirá o documento como validado e moverá as alterações sujas.

Exemplos:

Mover as alterações para o anterior.

person.move_changes


67
68
69
70
71
72
73
74
# Arquivo 'lib/mongoid/changeable.rb', linha 67

def move_changes
  @changes_before_last_save = @previous_changes
  @previous_changes = Mudanças
  @attributes_before_last_save = @previous_attributes
  @previous_attributes = attributes.dup
  reinício_atomic_updates!
  change_attributes.Limpar
end

#post_persist ➤ Objeto

Itens que precisam ser executados após a persistência de um documento .

Exemplos:

Lidar com a persistência de publicações.

document.post_persist


80
81
82
83
84
# Arquivo 'lib/mongoid/changeable.rb', linha 80

def post_persist
  reinício_persisted_descendentes
  reinício_attributes_before_type_cast
  move_changes
end

#Previous_changesHash<string, Array<Object, Object> ] As alterações anteriores.

Obtenha as alterações anteriores no documento.

Exemplos:

Obtenha as alterações anteriores.

model.previous_changes

Retorna:

  • (Hash <string, Array <Object, Object> ] As alterações anteriores.)

    Hash <string, Array < Objeto, Objeto > ] As alterações anteriores.



92
93
94
# Arquivo 'lib/mongoid/changeable.rb', linha 92

def Previous_changes
  @previous_changes ||= {}
end

#remove_change(name) ➤ Objeto

Remova uma alteração do hash de atributos sujos. Usado pelos atualizadores atômicos de campo único.

Exemplos:

Remova uma alteração sinalizada.

model.remove_change(:field)

Parâmetros:

  • name (Símbolo | string)

    O nome do campo.



103
104
105
# Arquivo 'lib/mongoid/changeable.rb', linha 103

def remove_change(name)
  change_attributes.excluir(name.to_s)
end

#saved_change_to_attribute(attr) ⇒ Array<Object> | nil

Retorna a alteração de um atributo durante o último salvamento.

Parâmetros:

  • atr (Símbolo | string)

    O nome do atributo.

Retorna:

  • (Array<Object> | nil)

    Se o atributo foi alterado, retorna uma matriz contendo o valor original e o valor salvo, caso contrário, nulo.



152
153
154
155
# Arquivo 'lib/mongoid/changeable.rb', linha 152

def saved_change_to_attribute(atr)
  atr = database_field_name(atr)
  Previous_changes[atr]
end

#save_change_to_attribute?(attr, de: Utils::PLACEHOLDER, para: Utils::PLACEHOLDER) ➤ true | false

Retorna se este atributo foi alterado durante a última gravação.

Este método é útil após as chamadas de resposta, para ver a alteração

in an attribute during the save that triggered the callbacks to run.

Parâmetros:

  • atr (string)

    O nome do atributo.

  • from (Objeto) (padrão para: Utils::PLACEHOLDER)

    O objeto do qual o atributo foi alterado (opcional).

  • para (Objeto) (padrão para: Utils::PLACEHOLDER)

    O objeto para o qual o atributo foi alterado (opcional).

Retorna:

  • (verdadeiro | falso)

    Se o atributo foi alterado durante a última gravação.



167
168
169
170
171
172
173
174
175
176
# Arquivo 'lib/mongoid/changeable.rb', linha 167

def save_change_to_attribute?(atr, de: Utilidades::Espaço reservado, para: Utilidades::Espaço reservado)
  Mudanças = saved_change_to_attribute(atr)
  Método false a menos que Mudanças.is_a?(Array)

  Método true se Utilidades.placeholder?(from) && Utilidades.placeholder?(para)
  Método Mudanças.primeiro == from se Utilidades.placeholder?(para)
  Método Mudanças.último == para se Utilidades.placeholder?(from)

  Mudanças.primeiro == from && Mudanças.último == para
end

#settersHash

Obtém todos os novos valores para cada um dos campos alterados, a serem passados para um modificador $set do MongoDB .

Exemplos:

Obtenha os setters para as atualizações atômicas.

person = Person.new(:title => "Sir")
person.title = "Madam"
person.setters # returns { "title" => "Madam" }

Retorna:

  • (Hash)

    Um Hash de setters atômicos.



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Arquivo 'lib/mongoid/changeable.rb', linha 116

def setters
  mods = {}
  Mudanças.cada_pair fazer |name, Mudanças|
    próximo a menos que Mudanças

    antigo, Novo = Mudanças
    Campo = Campos[name]
    chave = atomic_attribute_name(name)
    se Campo&.redimensionável?
      Campo.add_atomic_changes(auto, name, chave, mods, Novo, antigo)
    mais
      mods[chave] = Novo a menos que atomic_unsets.incluir?(chave)
    end
  end
  mods
end

#will_save_change_to_attribute?(attr, **kwargs) ⇒ true | false

Retorna se este atributo será alterado na próxima vez que salvarmos.

Este método é útil em validações e antes de chamadas de resposta para determinar

if the next call to save will change a particular attribute.

Parâmetros:

  • atr (string)

    O nome do atributo.

  • **kservices

    Os argumentos de palavra-chave opcionais.

Retorna:

  • (verdadeiro | falso)

    Se o atributo será alterado na próxima vez que salvarmos.



190
191
192
# Arquivo 'lib/mongoid/changeable.rb', linha 190

def will_save_change_to_attribute?(atr, **kwargs)
  atributo_changed?(atr, **kwargs)
end