在Rails 4中自动更新字段的最佳方法

时间:2015-10-16 15:40:19

标签: ruby-on-rails

我有一个状态字段,它是从数组生成的列表。我有一个上次更新的datetime字段,当以任何方式访问和更改记录时,该字段会更新。我需要做的是确定在过去30天内没有更新的任何记录,并自动将状态字段更新为待处理。这至少每周一次,但可能在每天结束时完成。

Cron作业本身不可用。我可以访问Delayed_job,但我不清楚我能否做到我需要做的事情。有什么其他方法可以完成这项工作?

1 个答案:

答案 0 :(得分:0)

首先在后台运行任务并在特定时间间隔的特定时间运行任何任务是两回事。

延迟作业可帮助我们根据任务的优先级在后台运行任何任务。

另一方面,cron job帮助我们每天,每月,每周或在一天中的任何特定时间运行任务。

您需要编写一个任务来获取过去30天内未更新的所有记录并更新其状态。然后,您需要使用wheneverclockwork等计划插件来安排作业在所需的时间运行。

您必须编写rake任务,例如:

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了解何时安排任务。 希望这可以帮助。谢谢!