テスト済みおよび動作中のバージョン
User.select(:first,:email).group(:first,:email).having("count(*) > 1")
また、これは少し無関係ですが便利です。各組み合わせがどのように検出されたかを確認したい場合は、最後に.sizeを付けてください:
User.select(:first,:email).group(:first,:email).having("count(*) > 1").size
次のような結果セットが返されます:
{[nil, nil]=>512,
["Joe", "[email protected]"]=>23,
["Jim", "[email protected]"]=>36,
["John", "[email protected]"]=>21}
それはかなりクールで、これまで見たことがなかったと思いました。
タリンの功績です。これは彼女の答えを微調整したものです。