点击我的应用中的按钮,用户可以“邀请”其他人加入。扫描地址簿中的电子邮件联系人,他们可以从列表中单击要向其发送电子邮件的人员。
目前屏幕看起来像这样:
基本上,我希望“已经使用酷炫的应用程序!”仅当人员地址簿中的电子邮件已存在于我的数据库中时。知道怎么做吗?
用户的电子邮件在我的数据库中标识为@ 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 %>
感谢您的帮助!
答案 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 %>