2011-03-25 182 views
0

我有一個應用程序提供了一個日曆,允許您創建日曆上顯示的事件。您設定的其中一個欄位是活動開始的那一天。我希望在活動的當天到達時能夠發送電子郵件提醒。Rails按計劃發送電子郵件

我是新來的鐵路,所以我不完全確定我需要什麼或從哪裏開始。我閱讀了ActionMailer的導軌指南並生成了一個郵件程序,我假設我需要其中的一個。我還閱讀了觀察員的導軌指南,並認爲這可能是我想要完成的途徑。

讓我們說,每週7天在上午9點中央,應該運行一個工作(cron或rake任務),它搜索數據庫中每個事件的'start_at'列(本地sqlite,帶有heroku的Postegre)如果start_date等於'今天?'然後發送動作郵件模板來提醒用戶。

那麼建立工作來檢查數據庫並每天啓動電子郵件的最佳方式是什麼(以及使用什麼工具)?在未來,我想這會提前提醒。

一些僞代碼:

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

只是不知道如何得到那個工作。

回答

2

你可以有一個控制器/動作來完成它,然後使用cURL之類的命令按照指定的時間表從cron作業調用url。

+0

因此,沿着send_email EventMailer.reminder_email(@event).deliver結束並使用cron來調用cURL http:// localhost:3000/EventMailer或其他東西? – 2011-03-25 21:07:24

+0

是的,我在很多地方都這麼做。效果很好。 – 2011-03-25 21:09:15

+1

這確實屬於Rake任務(由cron調用)。 Rake任務會將作業排隊,而作業運行員(delayed_job,resque)將開始執行並執行作業。 – yfeldblum 2011-03-26 09:45:19