2011-12-21 56 views
0

我想遍歷我的數據庫並查找某個時間段之前放置的每個項目(如5天前或3天前),並且每次都會自動發送一封電子郵件給用戶我運行腳本。因此,如果用戶在5天內未被激活,我希望腳本每天運行一次,並檢查用戶創建後的時間是否爲5天或3天或其他。在rails中使用時間戳發送電子郵件

我該如何在Rails中做這件事?

這是我到目前爲止有:

高清send_reminders

@users = User.where :activated => false 
@message= "Hi" 
@users.each do |n| 

    ActMailer.remind_users(n, current_user, @message).deliver 

end 

redirect_to current_user, :notice => 'Reminders were successfully sent' 

感謝

+0

這是我到目前爲止有: '高清send_reminders @users = User.where:activated => false @ message =「Hi」 @ users.each do | n | ActMailer.remind_users(N,CURRENT_USER,@message).deliver 結束 redirect_to的CURRENT_USER,:通知=> '提醒已成功發送' end' – 2011-12-21 04:37:43

回答

1

通過的cron一點點(建議時whenever gem ),你可以運行類似的東西這個。

你可能有這樣的東西在你的用戶等級:

class User < ActiveRecord::Base 
    REMINDER_TIME_IN_DAYS = 5 

    scope :unactivated, where(:active => false) 
    scope :unreminded, where("reminded = ? AND created_at < ?", true, REMINDER_TIME_IN_DAYS.days.ago) 

    def self.send_reminders_to_unactivated_users 
    User.unactivated.unreminded.each(&:send_activation_reminder) 
    end 
end 

然後在schedule.rb文件每當:

every 1.day, :at => "12:00 am" do 
    User.send_reminders_to_unactivated_users 
end 
+0

我怎麼能代替手工做這沒有克龍?我將每兩天定期運行一次該功能,我只想讓該功能返回5天前創建的用戶,但仍然處於非活動狀態。 – 2011-12-21 04:33:36

+0

@NosayrYassin仔細閱讀代碼。所有你需要的就在那裏。 – 2011-12-21 04:41:18

+0

您可以手動調用User.send_reminders_to_unactivated_users。 – 2011-12-21 05:41:07

相關問題