如何限制每个订阅者发送的电子邮件数量(ActionMailer)

时间:2014-11-20 04:09:00

标签: ruby-on-rails email ruby-on-rails-4

所以我有一个时事通讯应用程序,但它没有正常工作。

它应该如何工作是订户选择一个类别来订阅并每天收到一个关于该类别的报价。因此,如果您订阅健身类别,您每天都会收到一份新的健身报价。

在我的情况下,如果您订阅健身,您将一次性收到与健身类别相关的所有报价。

请参阅下面的代码:

 Category.all.each do |category|
   category.subscribers.each do |subscriber|
      category.quotes.each do |quote|
       SubscriptionMailer.sendmyemail(subscriber.email, category, quote.body, category.subscribers).deliver
     end
    end
end

如何向每个订阅者发送与他们选择的类别相关的一个报价分配,而不是一次性发送与每个类别相关的每个报价。我认为,有一系列与类别相关的引用,如何每天只发送一个与订阅者类别相对应的新引号?

1 个答案:

答案 0 :(得分:1)

以下代码将第一个Quote发送给其订阅者。当然,您必须维护一个表或字段,以便跟踪之前发送给订户的报价,以便您始终可以设置每天发送新报价。

Category.all.each do |category|
   category.subscribers.each do |subscriber|
      SubscriptionMailer.sendmyemail(subscriber.email, category, category.quotes.first.body, category.subscribers).deliver          
   end
end

这可以进一步更新为:

Category.all.each do |category|
   category.subscribers.each do |subscriber|
      SubscriptionMailer.sendmyemail(subscriber.email, category, subscriber.choose_quote(category), category.subscribers).deliver          
   end
end    

在你的模特中,

def choose_quote(cat)
  # send quote which is unique 
  # Meaning which was not sent 
end

这让您了解如何继续使用此功能,代码未经过测试且仅供参考