我一直试图围绕这些关联进行思考,但我遇到了一些障碍。我正在开发的应用程序目前有 2 个模型:成分和配方。每个背后的逻辑如下:
成分模型包含有关食品的信息,例如名称、批量价格等。食谱模型包含食谱名称、制备说明和成分列表(以及食谱所需的量)。
在挖掘了这里的一些问题并观看了一些 railscasts 之后,我确定 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
成分表中的字段类似于:recipe_id、成分 ID、成分数量(用于存储配方中特定成分的含量)
根据我上面提到的功能,这是以代码方式处理它的正确方法吗?任何帮助将不胜感激。谢谢!
编辑 我还希望能够从食谱表格中将这些新成分添加到食谱中。这是否需要任何额外的东西,比如必须为 through 表做 accept_nested_attributes_,或者这是 Rails 自己处理的事情?