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", "example@sqldat.com"]=>23,
["Jim", "example@sqldat.com"]=>36,
["John", "example@sqldat.com"]=>21}
Achei muito legal e não tinha visto antes.
Crédito para Taryn, esta é apenas uma versão aprimorada de sua resposta.