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

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

class Shoppinglist  :shoppinglistrecipezations end class Recipe  :shoppinglistrecipezations has_many :ingredients, :through => :ingredienzations has_many :ingredienzations end class Ingredient  :ingredienzations has_many :ingredienzations end 

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

你可以这样做:

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

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