Getestete und funktionierende Version
User.select(:first,:email).group(:first,:email).having("count(*) > 1")
Auch dies ist ein wenig unabhängig, aber praktisch. Wenn Sie sehen möchten, wie oft jede Kombination gefunden wurde, setzen Sie .size an das Ende:
User.select(:first,:email).group(:first,:email).having("count(*) > 1").size
und Sie erhalten ein Ergebnis zurück, das wie folgt aussieht:
{[nil, nil]=>512,
["Joe", "[email protected]"]=>23,
["Jim", "[email protected]"]=>36,
["John", "[email protected]"]=>21}
Fand das ziemlich cool und hatte es noch nie gesehen.
Dank Taryn ist dies nur eine optimierte Version ihrer Antwort.