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

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

Overview

Clase constructora utilizada para realizar la asignación de atributos #accepts_nested_attributes_for en asociaciones de muchos a n.

Resumen del atributo de la instancia

Atributos incluidos en Buildable

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

Resumen del método de instancia colapsar

Métodos incluidos en 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)

    Los atributos hash que se intentarán establecer.

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

    Las opciones definidas.



50
51
52
53
54
55
56
57
58
59
60
61
# Archivo 'lib/mongoid/association/nested/many.rb', línea 50

def inicializar(asociación, atributos, opciones = {})
  si atributos.respond_to?(con_acceso_indistinto)
    @atributos = atributos.con_acceso_indiferente.sort hacer |un(a), b|
      un(a)[0].to_i <=> b[0].to_i
    end
  else
    @atributos = 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.

Ejemplos:

Compila los atributos anidados.

many.build(person)

Parámetros:

  • padre (documento)

    El documento principal de la asociación.

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

    Las opciones.

Devuelve:

  • (arreglo)

    Los atributos.



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

def compilar(padre, opciones = {})
  @existente = padre.enviar(asociación.Nombre)
  si over_limit?(atributos)
    propagar Errors::TooManyNestedAttributeRecords.Nuevo(existente, opciones[:limit])
  end
  atributos.cada hacer |attrs|
    si attrs.is_a?(::Picadillo)
      process_attributes(padre, attrs.con_acceso_indiferente)
    else
      process_attributes(padre, attrs[1].con_acceso_indiferente)
    end
  end
end