Classe: Mongoid::Association::Nested::Many
- Herda:
-
Objeto
- Objeto
- Mongoid::Association::Aninhado::Many
- 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
-
#build(principal, opções = {}) ➤ Array
Constrói a associação dependendo dos atributos e das opções passadas para a macro.
-
#inicializar(associação, atributos, opções = {}) ➤ Muitos
construtor
Crie o novo construtor para atributos aninhados em associações de um para muitos.
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.
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, = {}) @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 = @class_name = [:class_name] ? [: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.
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, = {}) @existente = principal.enviar(associação.name) aumentar Errors::TambémManyNestedAttributeRecords.Novo(existente, [: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 |