我知道我以前見過這個,但現在找不到任何東西。我想按某個列對查詢進行分組,並能夠顯示每個組中有多少個查詢。我得到了第一部分:Group and count in Rails
@line_items = @project.line_items.all(:group => "device_id")
這是針對我的訂單項索引視圖,它只是一個顯示訂單項的表格。現在該行項目是按設備分組的,該如何在該表格中爲「count」創建一列?
我知道我以前見過這個,但現在找不到任何東西。我想按某個列對查詢進行分組,並能夠顯示每個組中有多少個查詢。我得到了第一部分:Group and count in Rails
@line_items = @project.line_items.all(:group => "device_id")
這是針對我的訂單項索引視圖,它只是一個顯示訂單項的表格。現在該行項目是按設備分組的,該如何在該表格中爲「count」創建一列?
您可以在line_items
上做count
,這將返回給您一個有序散列device_id
和count
。
@project.line_items.group(:device_id).count
只需添加一個:select
選項:
@line_items = @project.line_items.all(
:group => "device_id",
:select => "device_id, COUNT(*) as count"
)
然後,每個@line_item
將有一個count
屬性。
哈希devise_id關鍵的和相關的記錄數
@project.line_items.group(:devise_id).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
它們將爲枚舉屬性返回完全不同的結果。例如: 'customer_subscriptions.group(:狀態).count'將返回: '{1 => 6,2 => 11,3 => 136 0 => 30}' 和'customer_subscriptions。採摘(:狀態).count'只會返回'183' – msdundar 2017-10-16 12:15:30
是真的,那麼uniq呢? @ project.line_items.pluck(:DEVICE_ID).uniq.count – 2017-11-10 09:44:08
我想你可以試試這個以及。
@project.line_items.group(:device_id).pluck("device_id, count(device_id)")
^^這給出了元素的DEVICE_ID和計數「
這給出了一個警告:'折舊警告:不建議使用查找器選項計算關係#。請建立一個範圍,然後調用它來代替。 (從C中調用:'count':)' – Chloe 2013-12-23 22:21:07
@Chloe - 嘗試在Rails 4中刪除警告:'@project.line_items.group(:device_id).count' – 2014-01-07 21:01:03