2015-04-17 77 views
0

我的模式是这样的:的Rails在GROUP_BY查询额外列

Product belongs_to Category 
Product belongs_to OrderItem 

我想选择的某一天销售的产品总价值,由Categorylike这个分组:

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

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

我在结果中需要一些额外的列,如类别的Id。我怎样才能做到这一点?

感谢

+0

尝试'组(” ','categories.id')' –

+0

现在有列,但我不能在视图中用'item.id'访问它 –

+0

在这个查询之后,'@ items'应该包含'Ha sh',其中每个键是数组'[category_name,category_id]',并且该值是相应的'sum'。 –

回答

1

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

@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; %>