食谱模型中的成分总和创建购物清单

时间:2014-11-09 14:14:48

标签: sql ruby-on-rails postgresql activerecord many-to-many

我有一个购物清单模型,其中有许多食谱,这些食谱也有许多成分。

class Shoppinglist < ActiveRecord::Base
   has_many :shoppinglistrecipezations
   has_many :recipes, :through => :shoppinglistrecipezations
end

class Recipe < ActiveRecord::Base
 has_many :shoppinglistrecipezations
 has_many :shoppinglists, :through => :shoppinglistrecipezations
 has_many :ingredients, :through => :ingredienzations
 has_many :ingredienzations
end

class Ingredient < ActiveRecord::Base
 has_many :recipes, :through => :ingredienzations
 has_many :ingredienzations
end

当我向购物模型中添加几个食谱(其中一些具有相同的成分)时,我想打印购物清单中所有配料的清单和适量的配料。 Shoppinglistingredienzations有一个整数&#34;人物&#34;告诉我应该计算多少人服务,并且食谱有一个人变量来显示食谱的人数。 Ingredienzations包含数量,测量类型(克,茶匙等)和recipe_id。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

Shoppinglist.where(id: list_id).joins({recipes: : ingredients}).group('ingredients.name').sum('ingredients.amount')

假设您的Ingredient模型具有属性金额和名称。如果你有单位金额就变得更加棘手。但是可以重写此查询以使其也能正常工作。