我正在尝试运行基本的rails应用程序,以帮助从食物清单中捕获每种食物的营养信息。每种成分储存营养信息,并计算为各成分的总和。
这是我到目前为止所做的:
有两种型号食品和配料。每种食物都含有许多成分,每种成分都用于许多食物中。我想解决这个问题的方法就是用一张桌子来分解多对多,比如说有食物pk和pk成分的食谱。但我的问题是,食谱可以有很多成分,而且一种成分有很多食谱。我如何以最好的方式拆分这两个表,以便我可以捕获食品及其成分列表?或者有更好的方法来完成整个事情吗?
为了示例的目的而说食物有名称,描述和成分有名称,卡路里,营养素。
答案 0 :(得分:2)
您需要has_many_through关联。
您将组织如下:
class Food < ActiveRecord::Base
has_many :recipes
has_many :ingredients,
through: :recipes
end
class Ingredient < ActiveRecord::Base
has_many :recipes
has_many :foods,
through: :recipes
end
class Recipe < ActiveRecord::Base
belongs_to :food
belongs_to :ingredient
end
这样,您可以在Recipe