2011-10-31 81 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

有关的好处是你可以枚举,而不必返回到数据库,并删除项目的完整对象列表

,打印时间戳,不管。

在控制台中看起来有点困难,因为全部记录已加载,而不仅仅是标题和计数的散列。