2011-03-06 60 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