这有几个阶段,由于我对 Rails 比较陌生,我不确定我是否以最好的方式处理这个问题。
用户关注公司,公司应用程序在特定日期打开和关闭。如果用户关注一家公司,我希望他们在以下情况下自动收到电子邮件:a) 公司申请打开,b) 公司申请关闭前一周,c) 公司申请关闭当天。
我尝试过使用命名范围。我有以下模型方法(我认为这需要一些工作)设置每个公司的范围,具体取决于日期。
示范公司.rb
def application_status
if open_date == Today.date
self.opening = true
else
self.opening = false
end
if ((close_day - Today.date) == 7)
self.warning = true
else
self.warning = false
end
if close_day == Today.date
self.closing = true
else
self.closing = false
end
end
我希望每天对每个公司调用一次此方法,以便每个公司都有适当的范围 - 所以我尝试使用when gem(cron)和以下代码。在每个公司上运行上述模型方法。
时间表.rb
every 1.day do
runner "Firm.all.each do |firm|
firm.application_status
end"
end
然后对于每个范围的打开、警告、关闭,我在无论何时调度文件中都有一个方法,为简单起见,我将只显示打开方法。以下查询已应用开放范围的所有公司,并对其运行 application_open_notification 方法。
时间表.rb
every 1.day do
runner "Firm.opening.each do |firm|
firm.application_open_notification
end"
end
这会在 Firm.rb 模型中调用以下方法
def application_open_notification
self.users.each do |user|
FirmMailer.application_open(user, self).deliver
end
end
这反过来又调用了拼图的最后一块......它应该向用户发送一封电子邮件,其中包括公司的名称。
def application_open(user,firm)
@firm = firm
@user = user
mail to: @user.email, subject: @firm' is now accepting applications'
end
end
这是解决这个问题的可行方法吗?特别是我对模型中的编码不是很熟悉。
非常感谢您提供的任何帮助。