Considérez l'association suivante:
class Product < ActiveRecord::Base
belongs_to :shop
accepts_nested_attributes_for :shop
end
Si
params[:product][:shop_attributes] = {"name" => "My Shop"}
et je fais:
@product = Product.new(params[:product])
@product.save
une nouvelle boutique avec nom "My Shop" est créée et affectée à la @product
, comme prévu.
Cependant, je ne peux pas comprendre ce qui se passe quand shop_attributes
contient quelque chose id
, comme:
params[:product][:shop_attributes] = {"id" => "20", "name" => "My Shop"}
Je reçois l'erreur suivante:
Couldn't find Shop with ID=20 for Product with ID=
Question 1
Que cela veut-il dire ?
Question 2
Si tel est le cas, c'est-à-dire le id
de la boutique est connu et le magasin avec tel id
existe déjà, comment devrais-je créer le @product
tel que cette boutique sera assignée?
Je pense que vous essayez de déterminer la création d'un nouvel élément associé par rapport à un élément existant.
Pour créer un nouvel article, vous semblez le faire fonctionner. Lorsque vous avez passé l'ID dans Shop_Attributes, cela n'a pas fonctionné, car il examine une association qui n'existe pas encore.
Si vous essayez d'associer à un article existant, vous devez utiliser ce qui suit:
params[:product][:shop_id] = "20"
Cela attribuera la boutique du produit actuel à la boutique avec ID 'Shop_id'. (Le produit devrait avoir une colonne 'shop_id'.)