Hola a todos.
Estoy teniendo problemas con ‘accepts_nested_attributes_for’ y me
sorprende porque, salvo error por mi parte, me da la impresión de que el
invento no funciona en absoluto a la hora de actualizar datos.
Quiero exponeros el caso para que me confirméis una de dos
posibilidades:
- Que os sucede lo mismo
- Que soy un torpe de mucho cuidado
Partimos de un modelo extremadamente sencillo:
#------- Modelo------------------
class Person < ActiveRecord::Base
has_many :directions
accepts_nested_attributes_for :directions, :allow_destroy => true
end
class Direction < ActiveRecord::Base
belongs_to :person
end
#--------------------------------
Y procedo con el siguiente código:
Person.create({:name => “Ambrosius”, :age => 12, :directions_attributes
=> {“new_1” => {:data => “En mi pueblo”}, “new_2” => {:data => “En el
tuyo”}}})
¡Albricias! Todo sucede como debe suceder y se crean un par de
direcciones asociadas a la persona “Ambrosius”, con id respectivas 1 y
2.
Entonces vamos un poco más allá y procuro actualizar una de las
direcciones.
ambrosius = Person.find(1)
ambrosius.attributes = {:directions_attributes => {“1” => {:data => “En
mi bonito pueblo”}}}
Pero, oh, vil destino, esta vez, pese a respetar la sintaxis que viene
en la documentación, ActiveRecord me crea otra dirección nueva que
asocia a “ambrosius”, pasando a tener 3 direcciones diferentes.
Me siento muy confuso ante este hecho. De ser un error, no se trata de
un pequeño bug, sino simplemente de que la funcionalidad está
completamente rota.
¿Qué hago mal? ¿Habéis tenido alguno éxito?
Muchas gracias por vuestros consejos y opiniones. Un saludo.
David