Versión probada y funcional
User.select(:first,:email).group(:first,:email).having("count(*) > 1")
Además, esto no tiene nada que ver, pero es útil. Si desea ver cuántas veces se encontró cada combinación, coloque .size al final:
User.select(:first,:email).group(:first,:email).having("count(*) > 1").size
y obtendrá un conjunto de resultados similar a este:
{[nil, nil]=>512,
["Joe", "[email protected]"]=>23,
["Jim", "[email protected]"]=>36,
["John", "[email protected]"]=>21}
Pensé que era genial y no lo había visto antes.
Gracias a Taryn, esta es solo una versión modificada de su respuesta.