2011-08-12 12 views
0

私はRails 3でAPIを開発しています。 最近、私はいくつかのユーザーアカウントが倍増しているのを見ました。私はいくつの口座が二重であるかを知る方法が必要なので、どれくらいのものがあるか分かりません。Rails/Ruby。ダブルメールの検索

ルビーでは、データベース全体を検索し、同じ電子メールアドレスを取得したユーザアカウントを取得する方法はありますか?

すべての入力をいただきありがとうございます!

答えて

1

(あなたは手掛かりを得ることになると思う場合は、お使いのモデルの詳細な説明を書きませんでしたが)あなたを助けますただ、Railsのコンソール(rails c)を開いて、このような何かを入力します。これは、電子メールアドレスをキーとそれのように発生した回数であることをハッシュを返します

Account.group(:email).having('count_all > 1').count 

を値。コンソールに出力それらすべてに

Account.where(:email => "[email protected]") 

、あなたは両方を組み合わせることができます:私はあなたがそれらの電子メールアドレスを取得し、実際のアカウントを取得することができると思います、そして、

=> #<OrderedHash {"[email protected]"=>2, "[email protected]"=>2}> 

:結果は次のようになりますこのように、これらの:

コンソールの最初の行に実行しているとき、私はこのエラーを取得する
email_hash = Account.group(:email).having('count_all > 1').count 
email_hash.each do |email, count| 
    Account.where(:email => email).each do |account| 
    p account 
    end 
end 
+0

:ActiveRecordは:: StatementInvalid:PGError:エラー:列「count_all」存在しません0 LINE 1:...電子メールでASメールを "users"からGROUP BY email count_all –

+0

あなたはどのバージョンのRailsを使用していますか?また、Postgresを使用しているようです。そうですか?まず、次のように入力してみてください: 'ActiveRecord :: Base.logger = Logger.new(STDOUT)'これはあなたのために生成するSQLを表示します。 – dontangg

0

あなたは(たとえば)使用しようとすると、私は思う:

UserAccount.all.group_by(&:email_address).each do |email, record| 
#you will get a set of records grouped by email address 
end 

これは

関連する問題