Ruby on rails Rails按时发送电子邮件

Ruby on rails Rails按时发送电子邮件,ruby-on-rails,actionmailer,Ruby On Rails,Actionmailer,我有一个显示日历的应用程序,允许您创建显示在日历上的事件。设置的字段之一是事件开始的日期。我想能够发送电子邮件提醒时,活动的一天到来 我是rails新手,所以我不确定我需要什么或者从哪里开始。我阅读了ActionMailer的rails指南并生成了一个mailer,我假设我需要一个。我还阅读了《rails观察家指南》,并认为这可能是我实现目标的一条途径 假设每天,每周7天,上午9点,应该运行一个作业(cron或rake任务),搜索数据库中每个事件的“start_at”列(sqlite本地,生产中

我有一个显示日历的应用程序,允许您创建显示在日历上的事件。设置的字段之一是事件开始的日期。我想能够发送电子邮件提醒时,活动的一天到来

我是rails新手,所以我不确定我需要什么或者从哪里开始。我阅读了ActionMailer的rails指南并生成了一个mailer,我假设我需要一个。我还阅读了《rails观察家指南》,并认为这可能是我实现目标的一条途径

假设每天,每周7天,上午9点,应该运行一个作业(cron或rake任务),搜索数据库中每个事件的“start_at”列(sqlite本地,生产中带有heroku的Postegre),如果开始日期等于“today”,则发送action mailer模板以提醒用户

那么,构建一份工作来检查数据库并每天发送电子邮件的最佳方式是什么(使用什么工具)?在未来,我想这会提前成为提醒

一些伪代码:

def send_email
  if self.start_at == Date.today #assuming self.start_at.today? works too.
    // send email
end

只是不知道如何让它工作。

你可以有一个控制器/操作来完成它,然后使用cURL之类的命令在指定的时间表上从cron作业调用url。

所以类似于def send_email EventMailer.rements_email(@event)。deliver end并使用cron调用cURL或其他什么的东西?是的,我在很多地方都这样做。工作正常。这实际上属于Rake任务(由cron调用)。Rake任务将对作业进行排队,作业运行程序(delayed_job,resque)将开始拉取和执行这些作业。