2011-08-18 57 views
0

我有一個帶有Location模型的rails應用程序,其中有ratingrating_count字段。現在,我需要在每天的特定時間將每個Locationratingrating_count屬性重置爲0,可以說UTC的UTC時間爲12:00:00。Rails:每天在特定時間重置模型屬性

我該如何做到這一點?我正在使用默認的sqlite3數據庫。

回答

2

最好的選擇是使用cron。你可以找到大量的文檔!雖然如果你正在運行一個Rails應用程序,你應該檢查出whenever一個漂亮的gem用於管理你的應用程序的cron作業!

+0

'when'似乎對此很好,謝謝! –

0

如果您在* nix框中,編寫一個腳本來執行更新(例如在PHP或Perl中),並將其簡單地添加到crontab中。檢出cron

1

最簡單的事情就是編寫一個執行該任務的rake任務,然後使用主機使用的任何調度系統(cron)。

另一種方法是使用delayed_job,它允許將工作推送到後臺進程。雖然延遲工作並不完全適合這樣的事情,但它完全有能力做到這一點。如果您的導軌進程開始,您將添加一個新的作業,在12:00運行。而工作的運行會重新安排工作。

延遲工作的好處是您的代碼在rails進程的上下文中運行,因此您可以使用已有的方法。還不錯:作業存儲在數據庫中,所以你可以有一個概述。

+0

好吧,我會去用耙子任務和cron我猜。所以'rake任務'只是一個遷移,在'rating'和'rating_count'上使用'remove_column',然後'add_column'rating'和'rating_count'正確嗎? –

+0

只需將值設置爲零。最簡單的方法是使用'Location.update_all(「rating = 0,rating_count = 0」)'。 'update_all'的文檔是http://apidock.com/rails/ActiveRecord/Base/update_all/class – nathanvda

相關問題