Version testée et fonctionnelle
User.select(:first,:email).group(:first,:email).having("count(*) > 1")
De plus, c'est un peu sans rapport mais pratique. Si vous voulez voir combien de fois chaque combinaison a été trouvée, mettez .size à la fin :
User.select(:first,:email).group(:first,:email).having("count(*) > 1").size
et vous obtiendrez un ensemble de résultats qui ressemble à ceci :
{[nil, nil]=>512,
["Joe", "[email protected]"]=>23,
["Jim", "[email protected]"]=>36,
["John", "[email protected]"]=>21}
J'ai trouvé ça plutôt cool et je ne l'avais jamais vu auparavant.
Merci à Taryn, ce n'est qu'une version modifiée de sa réponse.