我正在开发Rails 3中的API。 最近我看到一些用户帐户是双倍的。我不知道有多少,所以我需要一种方法来找出哪些帐户是双倍的。
有没有办法在ruby中搜索整个数据库并获取那些拥有相同电子邮件地址的用户帐户(因此加倍)?
感谢所有输入!
答案 0 :(得分:1)
只需打开Rails控制台(rails c
)并输入如下内容:
Account.group(:email).having('count_all > 1').count
这将返回一个Hash,其中包含电子邮件地址作为密钥以及它作为值发生的次数。结果将如下所示:
=> #<OrderedHash {"billyjoe@example.com"=>2, "johndoe@example.com"=>2}>
然后,我猜你可以拿这些电子邮件地址并实际获得帐户:
Account.where(:email => "billyjoe@example.com")
要在控制台中输出所有内容,您可以将两者结合起来:
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
答案 1 :(得分:0)
我想如果你尝试使用(例如):
UserAccount.all.group_by(&:email_address).each do |email, record|
#you will get a set of records grouped by email address
end
这会对你有所帮助(你没有写过模型的详细描述,但是如果认为你会得到线索的话)