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", "[email protected]"]=>23,
["Jim", "[email protected]"]=>36,
["John", "[email protected]"]=>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.