Rails group_by 查询中的额外列

Rails extra columns in group_by query

我的模型是这样的:

Product belongs_to Category
Product belongs_to OrderItem

我想select某一天销售的产品总价值,按类别分组像这样:

@items = OrderItem.joins(:product => [:category]).where('order_items.sale_date = ?', 1.day.ago.strftime('%Y-%m-%d')).group(:'categories.name').sum(:total_value)

查询工作正常,返回一个包含类别名称和总值的数组。

我需要在结果中添加一些额外的列,例如类别的 ID。我该怎么做?

谢谢

尝试以下方法获取类别数组和相应的总和:

@items = OrderItem.joins(:product => [:category]).where('order_items.sale_date = ?', 
 1.day.ago.strftime('%Y-%m-%d')).group('categories.id').
 sum(:total_value).map {|k, v| {category: Category.find(k), total_value: v}}

现在在视图中您可以使用类似的东西:

<% @items.each do |item| %>
 <p><%= item[:category].name %> - <%= item[:total_value] %></p>
<% end; %>