私はレールに少し慣れておらず、モデルをセットアップしています。私のアプリケーションの特定の部分は、3つの別々のモデルに依存しています。
レシピ
has_many :recipe_ingredients
レシピの材料
belongs_to :recipe
has_one :ingredient
成分
#blank right now
これは適切なモデル組織ですか?レシピの材料を別のモデルとして持っているのは、重量と数量の値を保存したいからです。
ありがとう、
ジョー
私はレールに少し慣れておらず、モデルをセットアップしています。私のアプリケーションの特定の部分は、3つの別々のモデルに依存しています。
has_many :recipe_ingredients
belongs_to :recipe
has_one :ingredient
#blank right now
これは適切なモデル組織ですか?レシピの材料を別のモデルとして持っているのは、重量と数量の値を保存したいからです。
ありがとう、
ジョー
これはほぼ正しいと思います。唯一の問題は、RecipeIngredient has_one
Ingredientであるため、材料レコードに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に保存されます。
説明が必要な場合はお知らせください。