问题:尝试开发发送自动回复电子邮件消息的 cron 作业或延迟作业。原来这是我认为的一个更棘手的问题。这是我的模型:
class List < ActiveRecord::Base
has_many :subscriptions
has_many :contacts, :through => :subscriptions
has_many :messages
class Subscription < ActiveRecord::Base
belongs_to :contact
belongs_to :list
class Message < ActiveRecord::Base
belongs_to :user
belongs_to :list
-----------Lists------------
| |
| |
Subscriptions (join) Messages
|
|
Contacts
我的目标是遍历所有订阅,并为每个订阅检查“订阅后的天数”是否与消息对象上的“注册后的天数”属性匹配。如果为真,则将消息传递给接收者,然后继续循环遍历其他消息。
class SubscriptionsController < ApplicationController
def deliver
@subscriptions = Subscription.all
@subscriptions.each do |subscription|
subscription.list.messages.each do |message|
if message.days_since == subscription.days_after
# deliver message through mailer in a scheduled delayed_job
else
end
end
end
end
如果有人在 2 天前订阅了列表,并且列表所有者希望在注册后 2 天发送消息,那么应该发送消息,因为它是匹配的。
上面的deliver 方法是我尝试遍历所有订阅,并将subscription.days_since 与message.days_after_signiup 进行比较。
任何建议或想法将不胜感激。真的一直在努力解决这个问题,能够通过这个障碍感觉很棒。
D.