2011-10-31 52 views

回答

2

我經常用直接SQL做這個 - 但這裏有一個Rails(版本3,使用arel)的方法 - 使用組操作和得到你想要的領域的數量。

例如如果我有一大堆的活動 - 我希望得到事件的計數具有唯一標題:

Event.group(:title).count 

返回標題,發現計數的的ActiveSupport :: OrderedHash。然後,您可以在散列上執行select以過濾出圖塊列表。例如

Event.group(:title).count.select{|title,count| count >= 2} 

這給了你,你可以回去做的東西,發現每刪除一個標題等

你也可以做一個"having" operation(這是我在原始的SQL做的),例如

Event.group(:title).having('count(title) >= 2') 

是:

SELECT `events`.* FROM `events` GROUP BY title HAVING count(title) >= 2 
在SQL

有關的好處是你可以枚舉,而不必返回到數據庫,並刪除項目的完整對象列表

,打印時間戳,不管。

在控制檯中看起來有點困難,因爲全部記錄已加載,而不僅僅是標題和計數的散列。

相關問題