Módulo: Mongoid::Attributes
- Estendido por:
- ActiveSupport::Concern
- Inclui:
- Aninhado, em processamento, somente leitura
- Incluído em:
- Componível
- Definido em:
- lib/mongoid/attributes.rb,
lib/mongoid/attributes/nested.rb,
lib/mongoid/attributes/dynamic.rb,
lib/mongoid/attributes/embedded.rb,
lib/mongoid/attributes/readonly.rb,
lib/mongoid/attributes/projector.rb,
lib/mongoid/attributes/processing.rb
Visão geral
Este módulo contém a lógica para lidar com o hash de atributos internos e como obter e definir valores.
Definido sob namespace
Módulos: ClassMethods, Dynamic, Embedded, Nested, Processing, Readonly Classes: Projector
Recolhimento do Resumo do atributo de instância
-
#atributos ➤ Objeto (também: #raw_attributes)
Somente leitura
Retorna o valor dos atributos do atributo.
Recolhimento do Resumo do método de instância
-
#assign_attributes(attrs = nil) ➤ Objeto
Permite que você defina todos os atributos para uma role de segurança de atribuição em massa específica passando um hash de atributos com chaves correspondentes aos nomes dos atributos (que novamente corresponde aos nomes das colunas) e ao nome da role usando a opção :as.
-
#atributo_emfalta?(nome) ➤ verdadeiro | false
Determine se o atributo está ausente no documento, devido a carregá-lo do banco de banco de dados com campos ausentes.
-
#atributo_present?(nome) ➤ verdadeiro | false
Determine se um atributo está presente.
-
#attributes_before_type_cast ➤ Hash
Obtenha os atributos que não foram convertidos.
-
#has_attribute?(nome) ➤ verdadeiro | false
O documento tem o atributo fornecido?
-
#has_attribute_before_type_cast?(nome) ➤ verdadeiro | false
O documento tem o atributo fornecido antes de ser atribuído e o tipo convertido?.
-
#process_raw_attribute(nome, bruto, campo) ➤ Objeto
privado
Processe os valores brutos dos atributos que você acabou de ler nos atributos dos documentos.
-
#read_attribute(name) ➤ Object (também: #[])
Ler um valor dos atributos do documento .
-
#read_attribute_before_type_cast(name) ➤ Objeto
Leia um valor a partir dos atributos antes de digitar.
-
#remove_attribute(name) ➤ Objeto
Remova um valor dos atributos do
Document
. -
#typed_attributes ➤ Objeto
Atributos convertidos por tipo de retorno.
-
#write_attribute(nome, valor) ➤ Objeto (também: #[]=)
Escreva um único atributo no hash de atributo do documento .
-
#write_attributes(attrs = nil) ➤ Object (também: #attributes=)
Escreve o hash de atributos fornecido no documento.
Métodos incluídos no Readonly
Métodos incluídos do Processamento
Detalhes do atributo da instância
#attributes Objeto (somente leitura) Também conhecido como: bruto_attributes
Retorna o valor dos atributos do atributo.
22 23 24 |
# Arquivo 'lib/mongoid/attributes.rb', linha 22 def attributes @attributes end |
Detalhes do método de instância
#assign_attributes(attrs = nil) ➤ Objeto
Permite que você defina todos os atributos para uma role de segurança de atribuição em massa específica passando um hash de atributos com chaves correspondentes aos nomes dos atributos (que novamente corresponde aos nomes das colunas) e ao nome da role usando a opção :as. Para ignorar a segurança de atribuição em massa, você pode usar a opção :sem proteção => verdadeiro.
218 219 220 221 222 |
# Arquivo 'lib/mongoid/attributes.rb', linha 218 def assign_attributes(attrs = nada) _assigning fazer process_attributes(attrs) end end |
#atributo_emfalta?(nome) ➤ verdadeiro | false
Determine se o atributo está ausente no documento, devido a carregá-lo do banco de banco de dados com campos ausentes.
249 250 251 |
# Arquivo 'lib/mongoid/attributes.rb', linha 249 def Atributo_em falta?(name) !Projetor.Novo(__selected_fields).Atributo_or_path_allowed?(name) end |
#atributo_present?(nome) ➤ verdadeiro | false
Determine se um atributo está presente.
33 34 35 36 37 38 |
# Arquivo 'lib/mongoid/attributes.rb', linha 33 def Atributo_present?(name) atributo = read_raw_attribute(name) !atributo.em branco? || atributo == false salvar Mongoid::Errors::AttributeNotLoaded false end |
#attributes_before_type_cast ➤ Hash
Obtenha os atributos que não foram convertidos.
46 47 48 |
# Arquivo 'lib/mongoid/attributes.rb', linha 46 def atributos_before_type_cast @attributes_before_type_cast ||= {} end |
#has_attribute?(nome) ➤ verdadeiro | false
O documento tem o atributo fornecido?
58 59 60 |
# Arquivo 'lib/mongoid/attributes.rb', linha 58 def has_attribute?(name) attributes.chave?(name.to_s) end |
#has_attribute_before_type_cast?(nome) ➤ verdadeiro | false
O documento tem o atributo fornecido antes de ser atribuído e o tipo convertido?
72 73 74 |
# Arquivo 'lib/mongoid/attributes.rb', linha 72 def has_attribute_before_type_cast?(name) atributos_before_type_cast.chave?(name.to_s) end |
#process_raw_attribute(nome, bruto, campo) ➤ 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.
Processe os valores brutos dos atributos que você acabou de ler nos atributos dos documentos.
105 106 107 108 109 |
# Arquivo 'lib/mongoid/attributes.rb', linha 105 def process_raw_attribute(name, bruto, Campo) valor = Campo ? Campo.desmongoizar(bruto) : bruto attribute_ will_change!(name) se valor.redimensionável? valor end |
#read_attribute(name) ➤ Objeto também conhecido como: []
Ler um valor dos atributos do documento. Se o valor não existir, ele retornará nulo.
88 89 90 91 92 |
# Arquivo 'lib/mongoid/attributes.rb', linha 88 def read_attribute(name) Campo = Campos[name.to_s] bruto = read_raw_attribute(name) process_raw_attribute(name.to_s, bruto, Campo) end |
#read_attribute_before_type_cast(name) ➤ Objeto
Leia um valor a partir dos atributos antes de digitar. Se o valor ainda não tiver sido atribuído, isso retornará o valor existente do atributo usando read_raw_attribute.
122 123 124 125 126 127 128 129 |
# Arquivo 'lib/mongoid/attributes.rb', linha 122 def read_attribute_before_type_cast(name) atr = name.to_s se atributos_before_type_cast.chave?(atr) atributos_before_type_cast[atr] mais read_raw_attribute(atr) end end |
#remove_attribute(name) ➤ Objeto
Remova um valor dos atributos do Document
. Se o valor não existir, ele falhará normalmente.
141 142 143 144 145 146 147 148 149 150 |
# Arquivo 'lib/mongoid/attributes.rb', linha 141 def remove_attribute(name) validate_write_field_name!(name.to_s) as_writeable_attribute!(name) fazer |Acesso| _assigning fazer attribute_ will_change!(Acesso) delay_atomic_unsets[atomic_attribute_name(Acesso)] = [] a menos que new_record? attributes.excluir(Acesso) end end end |
#typed_attributes ➤ Objeto
Atributos convertidos por tipo de retorno.
259 260 261 |
# Arquivo 'lib/mongoid/attributes.rb', linha 259 def typed_attributes Atributo_nomes.map { |name| [name, enviar(name)] }.to_h end |
#write_attribute(name, value) ➤ Objeto também conhecido como: []=
Escreva um único atributo no hash de atributo do documento . Isso também acionará as chamadas de resposta antes e depois da atualização e executará qualquer digitação necessária.
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
# Arquivo 'lib/mongoid/attributes.rb', linha 164 def write_attribute(name, valor) validate_write_field_name!(name.to_s) field_name = database_field_name(name) se Atributo_em falta?(field_name) aumentar Mongoid::Errors::AttributeNotLoaded.Novo(auto.classe, field_name) end se Atributo_gravável?(field_name) _assigning fazer localizado = Campos[field_name].tentar(:localizado?) atributos_before_type_cast[name.to_s] = valor typed_value = typed_value_for(field_name, valor) a menos que attributes[field_name] == typed_value || atributo_changed?(field_name) attribute_ will_change!(field_name) end se localizado presente = Campos[field_name].tentar(:localize_present?) loc_key, loc_val = typed_value.primeiro se presente && loc_val.em branco? attributes[field_name]&.excluir(loc_key) mais attributes[field_name] ||= {} attributes[field_name].mesclar!(typed_value) end mais attributes[field_name] = typed_value end # ao escrever um atributo, remova-o também do unset, # para que a remoção e a gravação não resultem em uma remoção. delay_atomic_unsets.excluir(field_name) typed_value end mais # TODO: MONGOID-5072 end end |
#write_attributes(attrs = nil) ➤ Objeto Também conhecido como: atributos=
Escreve o hash de atributos fornecido no documento. Isso só substituirá os atributos existentes se eles estiverem presentes no novo Hash
, todos os outros serão preservados.
235 236 237 |
# Arquivo 'lib/mongoid/attributes.rb', linha 235 def write_attributes(attrs = nada) assign_attributes(attrs) end |