ruby on rails - strong - Rails 3: ¿Cómo funciona "accepts_nested_attributes_for"?
strong params rails (1)
Creo que estás tratando de descubrir la creación de un nuevo elemento asociado frente a la asociación con un elemento existente.
Para crear un nuevo elemento, parece que lo tiene funcionando. Cuando pasaste la identificación en shop_attributes, no funcionó, porque está buscando una asociación que aún no existe.
Si intenta asociarse con un elemento existente, debe usar lo siguiente:
params[:product][:shop_id] = "20"
Esto asignará la tienda del producto actual a la tienda con id ''shop_id''. (El producto debe tener una columna ''shop_id'').
Considere la siguiente asociación:
class Product < ActiveRecord::Base
belongs_to :shop
accepts_nested_attributes_for :shop
end
Si
params[:product][:shop_attributes] = {"name" => "My Shop"}
y yo hago
@product = Product.new(params[:product])
@product.save
se crea una nueva tienda con el nombre "Mi tienda" y se asigna al producto @product
, como se esperaba.
Sin embargo, no puedo entender qué sucede cuando shop_attributes
contiene algún id
, como:
params[:product][:shop_attributes] = {"id" => "20", "name" => "My Shop"}
Obtuve el siguiente error:
Couldn''t find Shop with ID=20 for Product with ID=
Pregunta 1
Qué significa esto ?
Pregunta 2
Si este es el caso, es decir, se conoce la id
de la tienda, y la tienda con dicha id
ya existe, ¿cómo debo crear el producto @product
para que esta tienda se le asigne?