0

私はレールに少し慣れておらず、モデルをセットアップしています。私のアプリケーションの特定の部分は、3つの別々のモデルに依存しています。

レシピ

has_many :recipe_ingredients

レシピの材料

belongs_to :recipe
has_one :ingredient

成分

#blank right now

これは適切なモデル組織ですか?レシピの材料を別のモデルとして持っているのは、重量と数量の値を保存したいからです。

ありがとう、

ジョー

4

1 に答える 1

3

これはほぼ正しいと思います。唯一の問題は、RecipeIngredient has_oneIngredientであるため、材料レコードにrecipe_ingredient_id(has_oneの関連付けを参照)を格納する必要があるため、単一の材料がrecipe_ingredient(したがって関連するレシピ)にバインドされることです。これにより、同じ材料を異なるレシピに再利用することができなくなります。

代わりに、以下を使用してください。

レシピ:

has_many :recipe_ingredients
has_many :ingredients, :through => :recipe_ingredients

RecipeIngredient:

belongs_to :recipe
belongs_to :ingredient

成分:

has_many :recipe_ingredients
has_many :recipes, :through => recipe_ingredients

これにより、レシピと材料の間に多対多の関係が確立されるため、材料を複数のレシピに再利用できます。各成分の量はRecipeIngredientsに保存されます。

説明が必要な場合はお知らせください。

于 2012-07-13T23:00:51.307 に答える