2014-03-31 54 views
1

不同我有條目的資源模型,可以有相同的資源名稱:ActiveRecord的清單,計數

資源模型

ID name 
1 Item 1 
2 Item 1 
3 Item 2 
4 Item 3 
.... 

我想列出不同Resource.name用計數在我看來,該資源的發生次數爲:

Item 1 (2) 
Item 2 (1) 
Item 3 (1) 

性能是我最關心的問題,因爲有很多已經出現因爲它是儀表板,所以在視圖中。

我可以通過拉動視圖中的所有資源和過濾來實現這一目標,但是頁面加載時間會很長,有沒有人有更好的主意?

回答

0

這可以用groupcount相結合的方法很容易做到:

Item.group(:name).count 
>> ["Item 1" => 2, "Item 2" => 1, "Item 3" => 1] 
+0

太好了,我還需要ID,以便修改什麼你說:Item.group(:身份證,:名稱).Count之間。我不知道我是否在視圖中以一種聰明的方式訪問它,我做的如下:item [0] [0] - id,item [0] [1] - name,item [1 ] - 計數。似乎有點討厭! –

+0

那麼,你不能用'ID'分組,因爲它對每個記錄都是唯一的。在視圖中,您可以這樣做:'items.each do | k,v |'遍歷列表,'k'是名稱,'v'是計數值。 – MurifoX

+0

當然,非常感謝! –