在Rails中分组和计数

时间:2010-01-07 17:43:14

标签: ruby-on-rails count

我知道我之前见过这个,但现在找不到任何东西。我想按特定列对查询进行分组,并能够显示每个组中的查询数量。我得到了第一部分:

@line_items = @project.line_items.all(:group => "device_id")  

这是我的订单项索引视图,它只是一个显示订单项的表格。现在,如果订单项按设备分组,如何在该表中创建“计数”列?

7 个答案:

答案 0 :(得分:100)

您可以在count上执行line_items,这会返回device_idcount的有序哈希值。

@project.line_items.group(:device_id).count

答案 1 :(得分:10)

将devise_id的哈希值作为键和相关记录计数

@project.line_items.group(:devise_id).count

答案 2 :(得分:8)

只需添加:select选项:

@line_items = @project.line_items.all(
  :group  => "device_id",
  :select => "device_id, COUNT(*) as count"
)

然后每个@line_item都会有count属性。

答案 3 :(得分:3)

类似

 User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id")

也可能有用......

答案 4 :(得分:2)

仅计算采摘会更快,而不是群组

hbase

答案 5 :(得分:2)

我想你也可以试试这个。

@project.line_items.group(:device_id).pluck("device_id, count(device_id)")

^^这给出了具有元素'device_id和count'

的数组

答案 6 :(得分:0)

提交后:

https://github.com/rails/rails/commit/a1c05dd8b9bd3623289d3aa73dda2943d620cc34

有一种新方法可以做同样的事情:

@project.line_items.count(:group => LineItem.arel_table[:device_id])