有幾個階段,因爲我相對較新的軌道,我不確定我是否以最好的方式接近這一點。自定義模型方法,設置自動發送郵件的範圍
用戶關注某些日子的公司,公司申請開放和關閉。如果用戶關注公司,我希望他們在a)公司申請開放時b)自動收到電子郵件,b)公司申請關閉前一週,c)公司申請關閉的那一天。
我已經嘗試使用命名範圍。根據日期的不同,我有以下模型方法(我認爲這需要一些工作)來設置每個公司的範圍。
firms.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
我想這個方法模型對每家公司每天一次被調用,因此每個企業都有適當的範圍 - 所以我使用每當寶石(的cron)曾嘗試和下面的代碼。對每家公司運行上述模型方法。
Schedule.rb
every 1.day do
runner "Firm.all.each do |firm|
firm.application_status
end"
end
然後爲每個範圍開放,警告,最後,我有一個方法在每次調度文件,爲簡單起見,我將只顯示開放的方法。以下查詢適用於所有開放範圍的公司,並對其運行application_open_notification方法。
Schedule.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
這是一個可行的方法來解決這個問題?特別是我對模型中的編碼不是很熟悉。
非常感謝您提供的任何幫助。
我認爲你跳過範圍和創建模型方法的想法是ALOT更清潔,那麼我可以每天調用一次這些方法。謝謝你,這真的是一個很好的幫助! – RMcNairn 2012-04-11 11:05:37