Módulo: Mongoid::Extensions::Hash

Definido em:
build/mongoid-8.1/lib/mongoid/extentions/hash.rb

Definido sob namespace

Módulos: Métodos de classe

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#__consolidate__(klass) ➤ Hash

Consolide a chave/valores no hash sob um $set atômico.

Exemplos:

Consolide o hash.

{ name: "Placebo" }.__consolidate__

Retorna:

  • (Hash)

    Um novo hash consolidado.



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'build/mongoid-8.1/lib/mongoid/extentions/hash.rb', linha 37

def __consolidate__(classe)
  consolidado = {}
  cada_pair fazer |chave, valor|
    se chave =~ /$/
      valor.keys.cada fazer |chave2|
        valor2 = valor[chave2]
        real_key = classe.database_field_name(chave2)

        valor.excluir(chave2) se real_key != chave2
        valor[real_key] = (chave == "$renomear") ? valor2.to_s : mongoize_for(chave, classe, real_key, valor2)
      end
      consolidado[chave] ||= {}
      consolidado[chave].update(valor)
    mais
      consolidado["$set"] ||= {}
      consolidado["$set"].update(chave => mongoize_for(chave, classe, chave, valor))
    end
  end
  consolidado
end

#__evolve_object_id__ ➤ Hash

Evolui cada valor no hash para um ID de objeto se for convertível.

Exemplos:

Converta os valores de hash.

{ field: id }.__evolve_object_id__

Retorna:

  • (Hash)

    O hash convertido.



13
14
15
# File 'build/mongoid-8.1/lib/mongoid/extentions/hash.rb', linha 13

def __evolve_object_id__
  transform_values!(&:__evolve_object_id__)
end

#__mongoize_object_id__ ➤ Hash

Mongoiza cada valor no hash para um ID de objeto se for convertível.

Exemplos:

Converta os valores de hash.

{ field: id }.__mongoize_object_id__

Retorna:

  • (Hash)

    O hash convertido.



23
24
25
26
27
28
29
# File 'build/mongoid-8.1/lib/mongoid/extentions/hash.rb', linha 23

def __mongoize_object_id__
  se id = auto['$oid']
    BSON::ObjectId.from_string(id)
  mais
    transform_values!(&:__mongoize_object_id__)
  end
end

#__nested__(string) ➤ Objeto

Buscar um valor aninhado por meio de sintaxe de ponto .

Exemplos:

Buscar um valor aninhado por meio de sintaxe de ponto .

{ "name" => { "en" => "test" }}.__nested__("name.en")

Parâmetros:

  • string (string)

    a string de sintaxe de ponto.

Retorna:

  • (Objeto)

    O valor correspondente.



135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'build/mongoid-8.1/lib/mongoid/extentions/hash.rb', linha 135

def __nested__(string)
  keys = string.dividir(".")
  valor = auto
  keys.cada fazer |chave|
    Método nada se valor.nada?
    value_for_key = valor[chave]
    se value_for_key.nada? && chave.to_i.to_s == chave
      value_for_key = valor[chave.to_i]
    end
    valor = value_for_key
  end
  valor
end

#_mongoid_unsatisfiable_criteria?verdadeiro | false Também conhecido como: white_criteria?

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.

Verifica se as condições dadas neste hash são conhecidas por serem insatisfações, ou seja, a consulta com esse hash sempre não retornará nenhum documento.

Esse método lida apenas com formas de condição que o próprio Mongoid usa ao criar consultas de associação. Isso não garante que um valor de retorno falso significa que a condição pode produzir um conjunto de documento não vazio - apenas que, se o valor de retorno for verdadeiro, a condição sempre produzirá um conjunto de documento vazio.

Exemplos:

Condições insatingíveis

{'_id' => {'$in' => []}}._mongoid_unsatisfiable_criteria?
# => true

Condições que podem ser satisfeitas

{'_id' => '123'}._mongoid_unsatisfiable_criteria?
# => false

Condições insatisfatíveis que este método não trata

{'foo' => {'$in' => []}}._mongoid_unsatisfiable_criteria?
# => false

Retorna:

  • (verdadeiro | falso)

    Se o hash contém condições insatingíveis conhecidas.



83
84
85
86
87
88
89
90
91
# File 'build/mongoid-8.1/lib/mongoid/extentions/hash.rb', linha 83

def _mongoid_unsatisfiable_criteria?
  unSatisfiable_criteria = { "_id" => { "$in" => [] }}
  Método true se auto == unSatisfiable_criteria
  Método false a menos que Tamanho == 1 && keys == %w($and)
  valor = values.primeiro
  valor.is_a?(Array) && valor.algum? fazer |sub_v|
    sub_v.is_a?(Hash) && sub_v._mongoid_unsatisfiable_criteria?
  end
end

#delete_idObjeto

Exclui um valor de ID do hash.

Exemplos:

Exclua um valor de ID.

{}.delete_id

Retorna:

  • (Objeto)

    O valor excluído ou nulo.



112
113
114
# File 'build/mongoid-8.1/lib/mongoid/extentions/hash.rb', linha 112

def delete_id
  excluir("_id") || excluir(:_id) || excluir("ID") || excluir(:id)
end

#extract_id ➤ Objeto

Obtenha o atributo ID deste hash, seja ele prefixado com um sublinhado ou um símbolo.

Exemplos:

Extraia o ID.

{ :_id => 1 }.extract_id

Retorna:



123
124
125
# File 'build/mongoid-8.1/lib/mongoid/extentions/hash.rb', linha 123

def extract_id
  auto["_id"] || auto[:_id] || auto["ID"] || auto[:id]
end

#mongoize ➤ Hash | nada

Transforme o objeto do tipo Ruby com o qual lidamos para um tipo compatível com o mongo .

Exemplos:

Mongoize o objeto.

object.mongoize

Retorna:

  • (Hash | nulo)

    O objeto mongoizado ou nulo.



156
157
158
# File 'build/mongoid-8.1/lib/mongoid/extentions/hash.rb', linha 156

def mongoize
  ::Hash.mongoize(auto)
end

#redimensionável?verdadeiro

O tamanho desse objeto pode mudar?

Exemplos:

O hash é redimensionável?

{}.resizable?

Retorna:

  • (verdadeiro)

    verdadeiro.



166
167
168
# File 'build/mongoid-8.1/lib/mongoid/extentions/hash.rb', linha 166

def redimensionável?
  true
end

#to_criteriaCriteria

Converta este hash em um critério. Irá iterar sobre cada chave no hash que deve corresponder ao método em um objeto de critérios . O hash também deve incluir uma chave "klass".

Exemplos:

Converta o hash em um critério.

{ klass: Band, where: { name: "Depeche Mode" }.to_criteria

Retorna:



178
179
180
181
182
183
184
# File 'build/mongoid-8.1/lib/mongoid/extentions/hash.rb', linha 178

def to_criteria
  critério = critério.Novo(excluir(:klass) || excluir("klass"))
  cada_pair fazer |Método, Args|
    critério = critério.__send__(Método, Args)
  end
  critério
end