2011-03-06 58 views
0

我想自動刪除對象的Rails如何自動刪除對象

我Konkurrancer型號:

class Konkurrancer < ActiveRecord::Base 
belongs_to :kategori 
end 

我有一個名爲期限與日期一欄。 當到達最後期限時,我想要刪除對象。 我應該如何編寫代碼,它應該放在哪裏?

+0

你想在沒有任何通知的情況下將對象從數據庫中刪除,並且沒有任何機會被帶回? – tommasop 2011-03-06 18:14:25

+0

是的。我希望他們從公共視圖中刪除。但仍然希望能夠在管理控制檯中將其看作已刪除。 – 2011-03-06 18:17:27

回答

0

我認爲你應該讓名爲active的列在到達截止日期時設置爲false。可能您需要每天或每小時檢查截止日期的cron。

+0

另外,爲了補充一點,在一段固定的時間內(比如一週),您可以清理標記爲「不活動」的對象。 – Shreyas 2011-03-06 18:23:35

+0

我應該在控制器中做出一個動作還是應該進入模型? – 2011-03-06 18:24:58

0

你有2個問題在這裏:

  • 軟刪除(標記爲刪除,但保留記錄)。有幾種插件可以幫助您:http://ruby-toolbox.com/categories/activerecord_soft_delete.html
  • 定期檢查狀態並採取措施。像cron工作這樣簡單的工作打擊一個特殊的(並從別人隱藏)URL可以幫助或像BackgroundRB更rails'y可以幫助。
+0

我正在考慮選擇解決方案標記爲已刪除。那麼我是否應該每天運行一個後臺任務來查看截止日期是否已達到,以及是否將其標記爲已刪除。 – 2011-03-06 18:30:28

+0

您可以根據需要頻繁運行它,但要確保它不會給系統帶來額外的負擔。 – Zepplock 2011-03-06 21:25:51