私は典型的な基本的な問題を抱えていますが、それに対する良い解決策を見つけることができません。値を割り当てるために使用される結合テーブルを使用して、Railsの典型的な多対多の関係を考えてみましょう。
Recipe
has_many :recipe_ingredients
has_many :ingredients, :through => :recipe_ingredients
accepts_nested_attributes_for :recipe_ingredients
Ingredient
has_many :recipe_ingredients
has_many :recipes, :through => :recipe_ingredients
RecipeIngredient
belongs_to :recipe
belongs_to :ingredient
attr_accessible :quantity
ここでは何も奇妙なことはありません。今、新しい材料を使った新しいレシピを一度に作成したいとしましょう。次のようにJSONをサーバーに送信します。
{"recipe"=>
{"name"=>"New Recipe",
"ingredients"=>
[{"name" => "new Ingr 1", "quantity"=>0.1},
{"name" => "new Ingr 2", "quantity"=>0.7}]
}
}
パラメータをナビゲートしてオブジェクトを1つずつ作成できると思いますが、多対多の関連付け、とりわけを活用することを検討していたため、オブジェクトツリーを作成するaccepts_nested_attributes_for
ことができました。Recipe.create(params[:recipe])
それが送信されるJSONを変更することを意味する場合、それは問題ではありません。:)