我目前有一个应用程序,如果对属于他的页面有更新,用户可以选择接收电子邮件通知。我的工作效果很好,除非有多个页面有未决更新(我在更新时将状态更改为待处理状态),然后用户可能最终会收到几封电子邮件的SLAMMED - 每页一封属于他/她
我花了一段时间才开始这样做,但现在我无法在任务运行时(当前每天一次)在一个批处理电子邮件中发送属于用户的所有更新。
这是任务:
task :notify_user => :environment do
ProductPageUpdate.where(status: 'pending').each do |page_update|
PageUpdate.user_notification(page_update).deliver!
page_update.update_attribute(:status, 'notified')
end
end
这会发送我的page_update / user_notification.html.erb电子邮件,其中只包含一个返回相应页面的链接:
<h2>Your page has been updated!</h2>
<p><%= link_to @page_update.page.name, page_url(@page_update.page) %></p>
有关如何在一封电子邮件中发送属于某个用户的所有排队等待更新的简单提示,而不是一次发送多个?
答案 0 :(得分:1)
在任务中:
task :notify_user => :environment do
page_updates = ProductPageUpdate.where(status: 'pending')
PageUpdate.user_notification(page_updates).deliver!
page_updates.each do |page_update|
page_update.update_attribute(:status, 'notified')
end
end
在邮件程序模板中:
<% @page_updates.each do |page_update|%>
<p><%= link_to page_update.page.name, page_url(@page_update.page) %></p>
<% end %>