Si consideri il seguente associazione:Rails 3: Come funziona "accept_nested_attributes_for"?
class Product < ActiveRecord::Base
belongs_to :shop
accepts_nested_attributes_for :shop
end
Se
params[:product][:shop_attributes] = {"name" => "My Shop"}
e lo faccio:
@product = Product.new(params[:product])
@product.save
un nuovo negozio con il nome "My Shop" viene creato e assegnato al @product
, come previsto.
Tuttavia, non riesco a capire cosa succede quando shop_attributes
contiene alcune id
, come:
params[:product][:shop_attributes] = {"id" => "20", "name" => "My Shop"}
ottengo il seguente errore:
Couldn't find Shop with ID=20 for Product with ID=
Domanda 1
Cosa significa questo ?
Domanda 2
Se questo è il caso, cioè la id
del negozio è noto, e il negozio con tale id
già esistono, come devo creare il @product
in modo tale che questo negozio sarà assegnato a vero?
Qualche idea di come funzioni se un prodotto ha più negozi? Mi piace 'params [: product] [: shops_attributes] = {" 0 "=> {" id "=>" 20 "," name "=>" My Shop "}," 1 "=> {...}} '? Grazie! – Cimm
Usando la metodologia 'params [: product] [: shop_id]' puoi fare: 'params [: product] [: shop_ids] = [20,23,27]' –