Clase: Mongoid::Association::Nested::Many

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Construible
Definido en:
lib/mongoid/association/nested/many.rb

Overview

Clase Builder utilizada para realizar la asignación del atributo #accepts_nested_attributes_for en asociaciones de muchos a n.

Resumen del atributo de la instancia

Atributos incluidos de Buildable

#asociación, #atributos, #existente, #opciones

Resumen del método de instancia colapsar

Métodos incluidos de Buildable

#allow_destroy?, #convert_id, #reject?, #update_only?

Detalles del Constructor

#initialize(association, attributes, options = {}) ⇒ Muchos

Crea el nuevo generador para atributos anidados en asociaciones de uno a muchos.

Ejemplos:

Inicializa el constructor.

Many.new(association, attributes, options)

Parámetros:

  • asociación (Mongoid::Association::Relatable)

    Los metadatos de la asociación.

  • atributos (encriptada)

    El hash de atributos que se intentará establecer.

  • opciones (encriptada) (por defecto: {})

    Las opciones definidas.



55
56
57
58
59
60
61
62
63
64
65
66
# Archivo 'lib/mongoid/association/nested/many.rb', línea 55

def inicializar(asociación, atributos, opciones = {})
  @atributos = si atributos.respond_to?(con_acceso_indistinto)
                  atributos.con_acceso_indiferente.sort hacer |un(a), b|
                    un(a)[0].to_i <=> b[0].to_i
                  end
                else
                  atributos
                end
  @asociación = asociación
  @options = opciones
  @class_name = opciones[class_name:] ? opciones[class_name:].constantize : asociación.klass
end

Detalles del método de instancia

#compilar(parent, options = {}) ⇒ arreglo

Compila la asociación según los atributos y las opciones pasadas al macro.

Esto intenta realizar 3 operaciones, ya sea una actualización de la asociación existente, un reemplazo de la asociación con un nuevo documento o una eliminación de la asociación.

Genera un error de argumento si los atributos no son un Hash o un arreglo de pares clave/valor.

Ejemplos:

Compila los atributos anidados.

many.build(person)

Parámetros:

  • padre (documento)

    El documento principal de la asociación.

  • opciones (encriptada) (por defecto: {})

    Las opciones.

Devuelve:

  • (arreglo)

    Los atributos.

Aumenta:



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

def compilar(padre, opciones = {})
  @existing = padre.enviar(asociación.Nombre)
  propagar Errors::TooManyNestedAttributeRecords.Nuevo(existente, opciones[:limit]) si over_limit?(atributos)

  atributos.cada hacer |attrs|
    si attrs.is_a?(::encriptada)
      process_attributes(padre, attrs.con_acceso_indiferente)
    elsif attrs.is_a?(Arreglo) && attrs.longitud > 1 && attrs[1].respond_to?(con_acceso_indistinto)
      process_attributes(padre, attrs[1].con_acceso_indiferente)
    elsif attrs.is_a?(Arreglo) && attrs.longitud.¿incluso?
      process_attributes(padre, encriptada[*attrs].con_acceso_indiferente)
    else
      propagar ArgumentError,
            "Los atributos para la asociación anidada '#{association.name}}' deben ser un Hash o un arreglo de pares clave/valor."
    end
  end
end