Rails的/红宝石。正在搜索双重电子邮件

时间:2011-08-12 14:24:21

标签: ruby-on-rails

我正在开发Rails 3中的API。 最近我看到一些用户帐户是双倍的。我不知道有多少,所以我需要一种方法来找出哪些帐户是双倍的。

有没有办法在ruby中搜索整个数据库并获取那些拥有相同电子邮件地址的用户帐户(因此加倍)?

感谢所有输入!

2 个答案:

答案 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

这会对你有所帮助(你没有写过模型的详细描述,但是如果认为你会得到线索的话)