0

我一直试图围绕这些关联进行思考,但我遇到了一些障碍。我正在开发的应用程序目前有 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 自己处理的事情?

4

1 回答 1

0

:has_many through当一个对象可以连接零个或多个其他对象并且每个连接都有一些属性时该方法最有效。

例如,在您的情况下,您将在Connections表中存储每种成分的数量以及 recipe_id 和成分 ID。

所以,它对我来说看起来不错。:)

但是,您应该考虑将您的Ingredient_Recipe表命名为更合适的名称。

于 2012-08-25T16:44:18.783 回答