簡體   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