在Rails中进行分组和计数
我知道我以前见过这个,但现在找不到任何东西。 我想按某个列对查询进行分组,并能够显示每个组中有多less个查询。 我得到了第一部分:
@line_items = @project.line_items.all(:group => "device_id")
这是用于我的订单项索引视图,这只是一个显示订单项的表。 现在,如何在该表格中为“count”创build一个列,以便按设备对订单项进行分组?
您可以count
line_items
,它会返回device_id
和count
的有序散列。
@project.line_items.group(:device_id).count
devise_id作为密钥和相关logging计数的散列值
@project.line_items.group(:devise_id).count
只需添加一个:select
选项:
@line_items = @project.line_items.all( :group => "device_id", :select => "device_id, COUNT(*) as count" )
然后每个@line_item
将有一个count
属性。
就像是
User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id")
也可能工作…
这个提交之后:
https://github.com/rails/rails/commit/a1c05dd8b9bd3623289d3aa73dda2943d620cc34
有一个新的方法来做同样的事情:
@project.line_items.count(:group => LineItem.arel_table[:device_id])
因为只有数采才会在这里更快,而不是组
@project.line_items.pluck(:device_id).count @project.line_items.pluck(:device_id).uniq.count