我有一个带有Location
模型的rails应用,其中包含rating
和rating_count
字段。现在,我需要在每天的特定时间将每个Location
的{{1}}和rating
属性重置为0,比如说12:00:00 UTC。
我将如何做到这一点?我正在使用默认的rating_count
数据库。
答案 0 :(得分:2)
最好的选择是使用cron。你可以找到大量的文档!虽然如果你正在运行Rails应用程序,你应该查看whenever一个非常巧妙的宝石,用于管理应用程序的cron作业!
答案 1 :(得分:1)
最简单的方法是编写执行该工作的rake任务,然后使用主机使用的任何调度系统(cron)。
另一种方法是使用delayed_job,它允许将工作推送到后台进程。虽然延迟工作不适合这样的事情,但它完全有能力做到这一点。如果您的rails进程启动,则添加一个新作业,以便在12:00运行。工作的运行重新安排了工作。
延迟作业的好处在于您的代码在rails-process的上下文中运行,因此您可以使用已有的方法。同样不错:作业存储在数据库中,因此您可以概览。
答案 2 :(得分:0)
如果您在* nix框中,请编写脚本来执行更新(例如,在PHP或Perl中),然后将其添加到crontab。查看cron。