2011-01-19 31 views
0

我有一個循環模型有兩個字段:持續時間(字符串)和完成(布爾值)。當用戶創建一個循環時,他們輸入持續時間(比如說30分鐘),並且循環設置爲不完整(布爾0)。如何在循環持續時間(30分鐘)之後更新該數據庫條目以將循環標記爲完整(布爾1)?有沒有辦法處理這與ruby/rails代碼,或者我必須執行一個JavaScript函數?持續時間後更新數據庫(Ruby on Rails)

目標是能夠使用Cycle.all(:conditions ..)查找並顯示所有完成的循環並調用SQL數據庫。我寫了一個「完整的?」方法在循環模型中比較循環的年齡和持續時間,但這對於SQL查找方法是無用的。

解決此問題的最佳方法是什麼?謝謝!

回答

2

定義運行像耙子任務...

desc "Expire old cycles" 
task :cron => :environment do 
    expired = Cycle.all :conditions => ["expiration < ?", DateTime.now] 
    expired.each { |c| c.expire! } 
end 

哪裏c#expire!是將其標記爲在數據庫中過期的方法。然後設置rake cron通過cronjob運行每N分鐘。

如果您很喜歡在SQL中這樣做,您可以通過編寫查詢來優化此操作,以執行UPDATE cycles SET complete = 1 WHERE expiration < NOW();

+0

任何方式我可以做到這一點,而無需cron工作?這將在工廠環境中使用,其中週期的狀態非常重要,因此它應該準確無誤,這需要每分鐘運行一次cron作業。在共享服務器上,我讀過這個不好。 – aguynamedloren 2011-01-19 05:36:14

相關問題