2015-10-16 71 views
0

我有一個狀態字段,它是從數組中生成的列表。我有一個最後更新的日期時間字段,當以任何方式訪問和更改記錄時都會更新。我需要做的是確定在過去30天內沒有更新的任何記錄,並自動將狀態字段更新爲掛起。這將至少每週進行一次,但可能在每天結束時進行。自動更新Rails中的字段的最佳方式4

Cron作業本身不可用。我可以訪問Delayed_job,但我不清楚我是否可以讓它做我需要做的事情。有什麼其他方法可以完成這項工作?

+0

您可以使用cron作業輕鬆完成此操作。寫一個rake任務並通過cron job每週(或每天)調用它。你也可以使用'when'gem。 –

+0

你需要'status'字段嗎?不能從'last_updated'字段推斷'status'嗎?這是依賴於你的邏輯,但檢查這[答案](http://stackoverflow.com/a/30132601/2697183) – AbM

+0

狀態字段不是一個日期,它是像引用,PO收到等。我是將在上次更新的日期時間的30天內爲沒有特定狀態的訂單添加特定狀態。 – Shenanigator

回答

0

首先在後臺運行任務,並在特定時間在特定時間間隔運行任何任務是兩件不同的事情。

延遲作業可幫助我們根據任務的優先級在後臺運行任何任務。

另一方面,cron工作幫助我們每天,每月,每週或在任何特定時間執行任務。

您需要編寫一個任務來獲取所有在過去30天內未更新的記錄並更新其狀態。然後,您需要使用計劃插件(例如wheneverclockwork)來安排作業在所需的時間運行。

你必須寫耙任務類似:

task :update_records => :environment do 
    my_records = MyModel.where('updated_at <= ?', Time.now - 30.days) 
    # Do your operations here on my records 
end 

參考this用於鐘錶或this每當安排你的任務。 希望這有助於。謝謝!

+0

謝謝,看起來像只要有空。我會檢查一下,看看我能做些什麼。 – Shenanigator

相關問題