ruby on rails:搜索数据库中的用户电子邮件

时间:2013-08-14 10:28:22

标签: ruby-on-rails ruby

点击我的应用中的按钮,用户可以“邀请”其他人加入。扫描地址簿中的电子邮件联系人,他们可以从列表中单击要向其发送电子邮件的人员。

目前屏幕看起来像这样: enter image description here

基本上,我希望“已经使用酷炫的应用程序!”仅当人员地址簿中的电子邮件已存在于我的数据库中时。知道怎么做吗?

用户的电子邮件在我的数据库中标识为@ user.email。我知道我要做的是,'扫描我数据库中的所有@ user.emails,如果它们匹配@ contact.name然后显示消息',但不知道如何编码它。

我的代码的相关部分是:

<!-- go through all the contacts in a person's email address book -->
 <% @contacts.each do |name, value| %>
        <div class="email">
<!-- for all the contacts, have a check box, unchecked -->
          <%= check_box_tag "contacts[]", value, false, :id => value %>
<!-- make a label with the check box and the person's email
          <label for="<%= value %>"><%= name %></label>
          <%= "Already using my cool app!" %>
        </div>
      <% end %>

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

if !User.find_by_email(mail_address).nil?

应该做的伎俩

如果你想避免进行大量的单独数据库调用,你可以首先获取所有用户的所有邮件地址数组,然后检查它是否user.include?(mail_address)

使用where(:email => array_of_contac_mail_addresses)获取有限的集合并只检查那里的匹配

答案 1 :(得分:1)

您可以使用

User.where(:email => email).exists?

为避免多个数据库查询,您可以先获取

等电子邮件
existing_emails = User.where(["email IN (?)", @contacts.map(&:email)]).map &:email

<% @contacts.each do |contact| %>
  ..
  <% if existing_emails.include?(contact.email) %>

  <% else %>

  <% end %>
<% end %>