Recuerda que en la informática un problema casi siempere puede tener más de una soluciones, de igual modo nosotros aquí compartiremos lo más óptimo y eficiente.
Solución:
Donde se documenta:
De la documentación de la API bajo la asociación has_many en “Module ActiveRecord::Associations::ClassMethods”
colección.construir(attributes = , …) Devuelve uno o más objetos nuevos del tipo de colección que se han instanciado con attributes y vinculado a este objeto a través de un extranjero key, pero aún no se han guardado. Nota: ¡Esto solo funciona si ya existe un objeto asociado, no si es nulo!
La respuesta a la construcción en la dirección opuesta es una sintaxis ligeramente alterada. En tu ejemplo con los perros,
Class Dog
has_many :tags
belongs_to :person
end
Class Person
has_many :dogs
end
d = Dog.new
d.build_person(:attributes => "go", :here => "like normal")
o incluso
t = Tag.new
t.build_dog(:name => "Rover", :breed => "Maltese")
También puede usar create_dog para guardarlo instantáneamente (al igual que el método “crear” correspondiente al que puede llamar en la colección)
¿Cómo son los rieles lo suficientemente inteligentes? Es mágico (o más exactamente, simplemente no lo sé, ¡me encantaría descubrirlo!)
@article = user.articles.build(:title => "MainTitle")
@article.save
Si estás contento con lo expuesto, puedes dejar una noticia acerca de qué le añadirías a este artículo.