Versão testada e funcional
User.select(:first,:email).group(:first,:email).having("count(*) > 1")
Além disso, isso é um pouco não relacionado, mas útil. Se você quiser ver quantas vezes cada combinação foi encontrada, coloque .size no final:
User.select(:first,:email).group(:first,:email).having("count(*) > 1").size
e você obterá um conjunto de resultados que se parece com isso:
{[nil, nil]=>512,
["Joe", "[email protected]"]=>23,
["Jim", "[email protected]"]=>36,
["John", "[email protected]"]=>21}
Achei muito legal e não tinha visto antes.
Crédito para Taryn, esta é apenas uma versão aprimorada de sua resposta.