私はRails 3でAPIを開発しています。 最近、私はいくつかのユーザーアカウントが倍増しているのを見ました。私はいくつの口座が二重であるかを知る方法が必要なので、どれくらいのものがあるか分かりません。Rails/Ruby。ダブルメールの検索
ルビーでは、データベース全体を検索し、同じ電子メールアドレスを取得したユーザアカウントを取得する方法はありますか?
すべての入力をいただきありがとうございます!
私はRails 3でAPIを開発しています。 最近、私はいくつかのユーザーアカウントが倍増しているのを見ました。私はいくつの口座が二重であるかを知る方法が必要なので、どれくらいのものがあるか分かりません。Rails/Ruby。ダブルメールの検索
ルビーでは、データベース全体を検索し、同じ電子メールアドレスを取得したユーザアカウントを取得する方法はありますか?
すべての入力をいただきありがとうございます!
(あなたは手掛かりを得ることになると思う場合は、お使いのモデルの詳細な説明を書きませんでしたが)あなたを助けますただ、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
あなたは(たとえば)使用しようとすると、私は思う:
UserAccount.all.group_by(&:email_address).each do |email, record|
#you will get a set of records grouped by email address
end
これは
:ActiveRecordは:: StatementInvalid:PGError:エラー:列「count_all」存在しません0 LINE 1:...電子メールでASメールを "users"からGROUP BY email count_all –
あなたはどのバージョンのRailsを使用していますか?また、Postgresを使用しているようです。そうですか?まず、次のように入力してみてください: 'ActiveRecord :: Base.logger = Logger.new(STDOUT)'これはあなたのために生成するSQLを表示します。 – dontangg