Rails:每天在特定时间重置模型属性

时间:2011-08-18 10:14:38

标签: ruby-on-rails ruby-on-rails-3 model reset

我有一个带有Location模型的rails应用,其中包含ratingrating_count字段。现在,我需要在每天的特定时间将每个Location的{​​{1}}和rating属性重置为0,比如说12:00:00 UTC。

我将如何做到这一点?我正在使用默认的rating_count数据库。

3 个答案:

答案 0 :(得分:2)

最好的选择是使用cron。你可以找到大量的文档!虽然如果你正在运行Rails应用程序,你应该查看whenever一个非常巧妙的宝石,用于管理应用程序的cron作业!

答案 1 :(得分:1)

最简单的方法是编写执行该工作的rake任务,然后使用主机使用的任何调度系统(cron)。

另一种方法是使用delayed_job,它允许将工作推送到后台进程。虽然延迟工作不适合这样的事情,但它完全有能力做到这一点。如果您的rails进程启动,则添加一个新作业,以便在12:00运行。工作的运行重新安排了工作。

延迟作业的好处在于您的代码在rails-process的上下文中运行,因此您可以使用已有的方法。同样不错:作业存储在数据库中,因此您可以概览。

答案 2 :(得分:0)

如果您在* nix框中,请编写脚本来执行更新(例如,在PHP或Perl中),然后将其添加到crontab。查看cron