Clase: Mongoid::Association::Nested::Many
- Hereda:
-
Objeto
- Objeto
- Mongoid::Association::Nested::Many
- 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
-
#compilar(parent, options = {}) ⇒ arreglo
Compila la asociación según los atributos y las opciones pasadas al macro.
-
#initialize(asociación, atributos, opciones = {}) ⇒ Muchas
constructor
Crea el nuevo generador para atributos anidados en asociaciones de uno a muchos.
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.
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, = {}) @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 = @class_name = [class_name:] ? [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.
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, = {}) @existing = padre.enviar(asociación.Nombre) propagar Errors::TooManyNestedAttributeRecords.Nuevo(existente, [: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 |