繁体   English   中英

在导轨中将一个阵列与另一个阵列进行比较

[英]Comparing one array against another in rails

我正在使用Rails中的“联系人” gem从其邮件应用程序中检索用户联系人。 它返回联系人,如下所示:

["person name", "personemail@example.com"], ["person name", "personemail@example.com"], ["person name", "personemail@example.com"] etc...

我想将此列表与已经为我的网站注册的用户进行比较

Users.find(:all)返回:

[#<User id: 11, login: "examplelogin", email: "example@example.com">, #<User id: 12, login: "examplelogin", email: "example@example.com">, etc... ]

比较gmail联系人电子邮件和用户电子邮件并仅显示匹配的电子邮件的最佳方法是什么?

我想的是:

@contacts = Contacts::Gmail[params[:from]].new(params[:login], params[:password]).contacts
@contacts.each do |c|
  @email = c[1]
  @user = Users.find_by_email(@email)
end

大概只会将匹配的用户返回。 我觉得必须有一个我没有考虑的更好的方法来解决这个问题。 有什么建议么?

@users = Users.find_all_by_email(@contacts.collect{|contact| contact[1]})

编辑:

您之前拥有的内容将为每个联系人执行查找,而只留下最后一个查询的结果,取决于用户是否使用此电子邮件,该查询是否为用户。 这将执行一个查询并返回所有成功匹配项的数组:

where 'users'.'email' in array_of_email_addresses. 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM