Я чаще всего делаю это с прямым SQL - но вот Rails (версия 3, использующая arel) способ сделать это - использовать групповую операцию и получить счетчик желаемого поля.
например, еслиУ меня есть куча событий - и я хотел получить количество событий с уникальными заголовками:
Event.group(:title).count
, которое возвращает ActiveSupport :: OrderedHash заголовка и найденное количество.Затем вы можете сделать select в хэше, чтобы отфильтровать список тайлов.например,
Event.group(:title).count.select{|title,count| count >= 2}
Это дает вам названия, с которыми вы можете вернуться и что-то сделать, найти и удалить их, и т. д.
Вы также можете сделать "имея"операция (что я делаю в raw sql), например:
Event.group(:title).having('count(title) >= 2')
, что:
SELECT `events`.* FROM `events` GROUP BY title HAVING count(title) >= 2
в SQL
Хорошая вещь в том, что вы получаетеполный список объектов, который вы можете перечислить, не возвращаясь к БД и не удаляя элементы, печатая временные метки, что угодно.
В консоли смотреть немного сложнее, поскольку загружается полная запись, а не просто хэш заголовков и счетчиков.