Classe: Mongoid::Association::Nested::Many

Herda:
Objeto
  • Objeto
mostrar tudo
Inclui:
Construível
Definido em:
lib/mongoid/association/nested/many.rb

Visão geral

classe de construtor usada para executar a atribuição de atributos # accepts_nested_attributes_for em associações muitos-para-n.

Resumo do atributo de instância

Atributos incluídos no Construível

#association, #attributes, #existente, # opções

Recolhimento do Resumo do método de instância

Métodos incluídos do Buildable

#allow_destroy?, #convert_id, #rejeitar?, #update_only?

Detalhes do construtor

#inicializar(associação, atributos, opções = {}) ➤ Muitos

Crie o novo construtor para atributos aninhados em associações de um para muitos.

Exemplos:

Inicialize o construtor.

Many.new(association, attributes, options)

Parâmetros:

  • associação (Mongoid::Association::Relatable)

    Os metadados da associação.

  • attributes (Hash)

    O hash de atributos para tentar definir.

  • opções (Hash) (padrão para: {})

    As opções definidas.



55
56
57
58
59
60
61
62
63
64
65
66
# Arquivo 'lib/mongoid/association/nested/many.rb', linha 55

def inicializar(associação, attributes, opções = {})
  @attributes = se attributes.respond_to?(:with_indizer_access)
                  attributes.with_indizer_access.sort fazer |uma, b|
                    uma[0].to_i <=> b[0].to_i
                  end
                mais
                  attributes
                end
  @association = associação
  @opções = opções
  @class_name = opções[:class_name] ? opções[:class_name].constanteizar : associação.classe
end

Detalhes do método de instância

#build(principal, opções = {}) ➤ Array

Constrói a associação dependendo dos atributos e das opções passadas para a macro.

Isso tenta executar operações 3 , seja uma atualização da associação existente, uma substituição da associação por um novo documento ou uma remoção da associação.

Ele gera um erro de argumento se os atributos não forem um hash ou uma array de pares chave/valor.

Exemplos:

Construa os attrs aninhados.

many.build(person)

Parâmetros:

  • principal (Documento)

    O documento principal da associação.

  • opções (Hash) (padrão para: {})

    As opções.

Retorna:

  • (Array)

    Os atributos.

Aumenta:



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Arquivo 'lib/mongoid/association/nested/many.rb', linha 28

def COMPILAR(principal, opções = {})
  @existente = principal.enviar(associação.name)
  aumentar Errors::TambémManyNestedAttributeRecords.Novo(existente, opções[:limit]) se over_limit?(attributes)

  attributes.cada fazer |attrs|
    se attrs.is_a?(::Hash)
      process_attributes(principal, attrs.with_indizer_access)
    elsif attrs.is_a?(Array) && attrs.Tamanho > 1 && attrs[1].respond_to?(:with_indizer_access)
      process_attributes(principal, attrs[1].with_indizer_access)
    elsif attrs.is_a?(Array) && attrs.Tamanho.mesmo?
      process_attributes(principal, Hash[*attrs].with_indizer_access)
    mais
      aumentar ArgumentError,
            "Os atributos da associação aninhada'#{associação.nome}'devem ser um Hash ou uma Array de pares chave/valor. "
    end
  end
end