Wersja przetestowana i działająca
User.select(:first,:email).group(:first,:email).having("count(*) > 1")
Jest to również trochę niezwiązane, ale przydatne. Jeśli chcesz zobaczyć, jak razy została znaleziona każda kombinacja, umieść .size na końcu:
User.select(:first,:email).group(:first,:email).having("count(*) > 1").size
a otrzymasz zestaw wyników, który wygląda tak:
{[nil, nil]=>512,
["Joe", "example@sqldat.com"]=>23,
["Jim", "example@sqldat.com"]=>36,
["John", "example@sqldat.com"]=>21}
Pomyślałem, że to całkiem fajne i nie widziałem tego wcześniej.
Podziękowania dla Taryn, to tylko poprawiona wersja jej odpowiedzi.