Módulo: Mongoid::Atributos::Anidados::Métodos de clase

Definido en:
lib/mongoid/atributos/nested.rb

Colapso delresumen constante

RECHAZAR_TODOS_LOS_PROCESO_EN_BLANCO =
->(atributos){
  atributos.¿todo? { |clave, valor| clave == '_destruir ' || valor.blank? }
}

Colapso del resumen del método de instancia

Detalles del método de instancia

#acepta_atributos_anidados_para(*args) ⇒ Objeto

Se utiliza cuando se necesitan actualizar modelos relacionados desde una asociación madre. Se puede usar en asociaciones embebidas o referenciadas.

Ejemplos:

Definición de atributos anidados.


class Person
  include Mongoid::Document

  embeds_many :addresses
  embeds_one :game
  references_many :posts

  accepts_nested_attributes_for :addresses, :game, :posts
end

Parámetros:

  • *argumentos (Símbolo...,Almohadilla)

    Una lista de nombres de asociaciones, seguida de un hash opcional de opciones.



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Archivo 'lib/mongoid/attributes/nested.rb', línea 48

def acepta atributos anidados para(*args)
  opciones = args.extract_options!.dup
  opciones[:autosave] = true Si opciones[:autosave].nil?

  opciones[:rechazar_si] = RECHAZAR_TODOS_LOS_PROCEDIMIENTOS_EN_BLANCO Si opciones[:rechazar_si] == :all_blank
  args.cada hacer |Nombre|
    met = "#{nombre}_atributos="
    yo.atributos anidados["#{nombre}_atributos"] = met
    asociación = relaciones[Nombre.a_s]
    propagar Errors::Metadatos de atributos anidados no encontrados.Nuevo(yo, Nombre) a no ser que asociación
    atributos anidados de guardado automático(asociación) Si opciones[:autosave]

    re_definir_método(met) hacer |attrs|
      _asignación hacer
        Si asociación.polimórfico? y  asociación.inverse_type
          klass = asociación.resolver.modelo_para(Enviar(asociación.inverse_type))
          opciones = opciones.¡unir!(:nombre_de_clase => klass)
        end
        asociación.constructor anidado(attrs, opciones).construir(yo)
      end
    end
  end
end