Тествана и работеща версия
User.select(:first,:email).group(:first,:email).having("count(*) > 1")
Освен това това е малко несвързано, но удобно. Ако искате да видите колко пъти е намерена всяка комбинация, поставете .size в края:
User.select(:first,:email).group(:first,:email).having("count(*) > 1").size
и ще получите обратно набор от резултати, който изглежда така:
{[nil, nil]=>512,
["Joe", "[email protected]"]=>23,
["Jim", "[email protected]"]=>36,
["John", "[email protected]"]=>21}
Мислех, че е доста готино и не съм го виждал преди.
Заслуга на Тарин, това е само преработена версия на нейния отговор.