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.



150
151
152
153
# Arquivo 'lib/mongoid/changeable.rb', linha 150

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.



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

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.



51
52
53
# Arquivo 'lib/mongoid/changeable.rb', linha 51

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.



61
62
63
64
65
66
# Arquivo 'lib/mongoid/changeable.rb', linha 61

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.



41
42
43
# Arquivo 'lib/mongoid/changeable.rb', linha 41

def criancas_alteradas?
  @children_ may_Have_changed || _children.algum?(&:Alterado?)
end

#criancas_may_key_changed!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.

Indica que os filhos deste documento podem ter mudado e devem ser verificados quando o documento for validado.



22
23
24
# Arquivo 'lib/mongoid/changeable.rb', linha 22

def criancas_ may_key_changed!
  @children_ may_Have_changed = true
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


75
76
77
78
79
80
81
82
83
# Arquivo 'lib/mongoid/changeable.rb', linha 75

def move_changes
  @changes_before_last_save = @previous_changes
  @previous_changes = Mudanças
  @attributes_before_last_save = @previous_attributes
  @previous_attributes = attributes.dup
  @children_ may_Have_changed = false
  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


89
90
91
92
93
# Arquivo 'lib/mongoid/changeable.rb', linha 89

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.



101
102
103
# Arquivo 'lib/mongoid/changeable.rb', linha 101

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.



112
113
114
# Arquivo 'lib/mongoid/changeable.rb', linha 112

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.



161
162
163
164
# Arquivo 'lib/mongoid/changeable.rb', linha 161

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.



176
177
178
179
180
181
182
183
184
185
# Arquivo 'lib/mongoid/changeable.rb', linha 176

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.



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Arquivo 'lib/mongoid/changeable.rb', linha 125

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.



199
200
201
# Arquivo 'lib/mongoid/changeable.rb', linha 199

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