我正在Rails 3中開發API。 最近我看到一些用戶帳號是雙倍的。我不知道有多少,所以我需要一種方法來找出哪些帳戶是雙重的。Rails/Ruby。搜索雙電子郵件
有沒有一種方法,在紅寶石中,搜索整個數據庫並獲取具有相同電子郵件地址(因此雙)的用戶帳戶?
感謝您的所有意見!
我正在Rails 3中開發API。 最近我看到一些用戶帳號是雙倍的。我不知道有多少,所以我需要一種方法來找出哪些帳戶是雙重的。Rails/Ruby。搜索雙電子郵件
有沒有一種方法,在紅寶石中,搜索整個數據庫並獲取具有相同電子郵件地址(因此雙)的用戶帳戶?
感謝您的所有意見!
只要打開Rails的控制檯(rails c
),然後鍵入像這樣:
Account.group(:email).having('count_all > 1').count
這將返回一個哈希的電子郵件地址是關鍵,它發生的次數值。結果看起來是這樣的:
=> #<OrderedHash {"[email protected]"=>2, "[email protected]"=>2}>
然後,我想你可以把這些電子郵件地址,並實際獲得帳戶:
Account.where(:email => "[email protected]")
要輸出他們都在控制檯,你可以結合兩個那些像這樣的:
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:ERROR:列「count_all」不存在 LINE 1:...電子郵件AS電子郵件FROM「users」GROUP BY電子郵件HAVING count_all –
您使用的是哪個版本的Rails?另外,它看起來像你正在使用Postgres。是對的嗎?你可以嘗試先輸入:'ActiveRecord :: Base.logger = Logger.new(STDOUT)'這會告訴你它爲你生成的SQL。 – dontangg