我定义了一个功能,当我们单击“发送邀请电子邮件”时,它可以向200位父母发送电子邮件。我面临的问题是,当我单击发送邀请电子邮件时,我收到一条消息“邀请电子邮件已经发送给所有人”。但是有许多父母尚未发送电子邮件。
parents_controller.rb
def send_email_to_everyone
@parents = Parent.where(invitation_email_sent: false, admin: false, email: !nil).limit(200)
# puts @parents.length
if @parents.length > 0
@parents.each do |parent|
parent.create_reset_digest
ParentMailer.invitation_confirmation(parent).deliver
parent.update_attributes(invitation_email_sent: true)
end
flash[:success] = "Invitation email has been sent to all."
redirect_to main_admin_path
else
flash[:success] = "Invitation email have already been sent to all"
redirect_to main_admin_path
end
end
main_admin.html.erb
<%= link_to "Send Invitation Email", send_email_to_everyone_path, class: "btn btn-info btn-2x" %>
答案 0 :(得分:1)
问题出在您选择父母的方式上,您写着email: !nil
。
在滑轨中,!nil
是true
。
因此,您正在寻找电子邮件值为true
的父母。您应该写:
@parents = Parent.where(invitation_email_sent: false, admin: false).where.not(email: nil).limit(200)
我替换了
.where(email: !nil)
与.where.not(email: nil)