Rails 3: Как работает «accept_nested_attributes_for»?

Рассмотрим следующую ассоциацию:

class Product < ActiveRecord::Base
  belongs_to :shop
  accepts_nested_attributes_for :shop
end

Если

params[:product][:shop_attributes] = {"name" => "My Shop"}

и я делаю:

@product = Product.new(params[:product])
@product.save

новый магазин с именем «Мой магазин» создается и назначается @product , как и ожидалось.

Однако я не могу понять, что происходит, когда shop_attributes содержит некоторый id , например:

params[:product][:shop_attributes] = {"id" => "20", "name" => "My Shop"}

Я получаю следующую ошибку:

Couldn't find Shop with ID=20 for Product with ID=

Вопрос 1

Что это означает?

Вопрос 2

Если это так, то есть id магазин известен, а магазин с таким id уже существует,как мне создать @product , чтобы этот магазин был назначен ему?

33
задан Chetan 29 July 2011 в 05:49
поделиться