加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 查找具有重复名称的所有用户

发布时间:2020-12-16 20:01:20 所属栏目:百科 来源:网络整理
导读:我有一个拥有first_name和last_name字段的用户,我需要做一个 ruby,根据名字和姓氏查找所有拥有重复帐户的用户.例如,我想有一个搜索,将搜索所有其他用户,并找到是否有相同的名称和电子邮件.我在想这样一个嵌套循环 User.all.each do |user| //maybe another l
我有一个拥有first_name和last_name字段的用户,我需要做一个 ruby,根据名字和姓氏查找所有拥有重复帐户的用户.例如,我想有一个搜索,将搜索所有其他用户,并找到是否有相同的名称和电子邮件.我在想这样一个嵌套循环
User.all.each do |user|
 //maybe another loop to search through all the users and maybe if a match occurs put that user in an array
end

有没有更好的办法

解决方法

您可以通过查找重复数据的位置来缩小搜索范围.例如,假设您想要查找使用不止一次的名字和电子邮件的每个组合.
User.find(:all,:group => [:first,:email],:having => "count(*) > 1" )

这将返回一个包含每个重复记录之一的数组.从那里,说一个返回的用户有“Fred”和“fred@example.com”,那么您可以搜索只有具有这些值的用户才能查找所有受影响的用户.

该查找的返回将类似于以下内容.请注意,阵列仅包含来自每组重复用户的单个记录.

[#<User id: 3,first: "foo",last: "barney",email: "foo@example.com",created_at: "2010-12-30 17:14:43",updated_at: "2010-12-30 17:14:43">,#<User id: 5,first: "foo1",last: "baasdasdr",email: "abc@example.com",created_at: "2010-12-30 17:20:49",updated_at: "2010-12-30 17:20:49">]

例如,该数组中的第一个元素显示一个具有“foo”和“foo@example.com”的用户.其余的可以根据需要从数据库中拉出来.

> User.find(:all,:conditions => {:email => "foo@example.com",:first => "foo"})
 => [#<User id: 1,last: "bar",created_at: "2010-12-30 17:14:28",updated_at: "2010-12-30 17:14:28">,#<User id: 3,updated_at: "2010-12-30 17:14:43">]

而且,您似乎希望为您的代码添加一些更好的验证,以防将来重复.

编辑:

如果您需要使用find_by_sql的大锤子,因为Rails 2.2及更早版本不支持:使用find可以使用以下内容,并提供与上述相同的数组.

User.find_by_sql("select * from users group by first,email having count(*) > 1")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读