Módulo: Mongoid::Persistable::Pushable

Estendido por:
ActiveSupport::Concern
Incluído em:
Mongoid::Persistable
Definido em:
lib/mongoid/persistable/pushable.rb

Visão geral

Define o comportamento das operações $push e $addToSet.

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#add_to_set(adiciona) ➤ Documento

Adicione os valores únicos às arrays somente se o valor ainda não existir na array.

Exemplos:

Adicione os valores aos conjuntos.

document.add_to_set(names: "James", aliases: "Bond")

Parâmetros:

  • adiciona (Hash)

    Os pares de campo/value a serem adicionados.

Retorna:



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Arquivo 'lib/mongoid/persistable/pushable.rb', linha 20

def add_to_set(adiciona)
  prepare_atomic_operation fazer |ops|
    process_atomic_operations(adiciona) fazer |Campo, valor|
      existente = enviar(Campo) || attributes[Campo]
      se existente.nada?
        attributes[Campo] = []
        # Leia o valor dos atributos:
        # https://jira.mongodb.org/browse/MONGOID-4874
        existente = attributes[Campo]
      end
      values = [ valor ].achatar(1)
      values.cada fazer |valid|
        existente.push(valid) a menos que existente.incluir?(valid)
      end
      ops[atomic_attribute_name(Campo)] = { "$each" => values }
    end
    { "$addToSet" => ops }
  end
end

#push(pushes) ➤ Documento

Empurre um único valor ou vários valores em arrays.

Exemplos:

Envie um único valor para as arrays.

document.push(names: "James", aliases: "007")

Emita vários valores em arrays.

document.push(names: [ "James", "Bond" ])

Parâmetros:

  • push(s) (Hash)

    As operações $push.

Retorna:



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Arquivo 'lib/mongoid/persistable/pushable.rb', linha 51

def push(push(s))
  prepare_atomic_operation fazer |ops|
    process_atomic_operations(push(s)) fazer |Campo, valor|
      existente = enviar(Campo) || começar
        attributes[Campo] ||= []
        attributes[Campo]
      end
      values = [ valor ].achatar(1)
      values.cada{ |valid| existente.push(valid) }
      ops[atomic_attribute_name(Campo)] = { "$each" => values }
    end
    { "$push" => ops }
  end
end