0

私はこれらの関連付けに頭を悩ませようとしてきましたが、ちょっとした問題にぶつかりました。私が取り組んでいるアプリには、現在2つのモデルがあります。材料とレシピです。それぞれの背後にあるロジックは次のとおりです。

材料モデルには、名前、バルク価格などの食品に関する情報が含まれています。レシピモデルには、レシピの名前、準備手順、および材料のリスト(レシピに必要な量とともに)が含まれています。

ここでいくつかの質問を掘り下げ、いくつかのレールキャストを見て、レシピに材料に関する追加情報を含めたいので、has_many_throughの関係が私がやろうとしていることに適している可能性があると判断しました(必要な量)。

この分野での私の限られた経験に基づいて、私はこのようにアプローチしたいと思います:

class Recipe < ActiveRecord::Base
  has_many :ingredients_recipes
  has_many :ingredients, :through => :ingredients_recipes
end

class Ingredient_Recipe < ActiveRecord::Base
  belongs_to :ingredient
  belongs_to :recipe
end

class Ingredient < ActiveRecord::Base
  has_many :ingredients_recipes
  has_many :recipes, :through => :ingredients_recipes
end

components_recipesテーブルに次のようなフィールドがある場合:recipe_id、component_id、component_qty(レシピに含まれる特定の材料の量を保存するため)

これは、上記の機能に基づいて、コード的にアプローチするための適切な方法ですか?どんな助けでも大歓迎です。ありがとう!

編集 また、これらの新しい材料をレシピフォームからレシピに追加できるようにしたいと思います。これには、throughテーブルに対してaccepts_nested_attributes_を実行する必要があるなど、追加の何かが必要ですか、それともRailsが独自に処理するものですか?

4

1 に答える 1

0

この:has_many throughアプローチは、1つのオブジェクトにゼロまたは他の多くのオブジェクトを接続でき、各接続にいくつかのプロパティが関連付けられている場合に最適に機能ます

たとえば、あなたの場合、各材料の量を、recipe_id、acomponent_idとともにConnectionsテーブルに保存します。

だから、それは私には良さそうです。:)

Ingredient_Recipeただし、テーブルにもっと適切な名前を付けることを検討する必要があります。

于 2012-08-25T16:44:18.783 に答える