Rails 请问 Rails 如何定时更新数据库里的一张表

blacktulip · December 11, 2012 · Last by patxiao replied at April 04, 2014 · 2768 hits

比方说我写个论坛吧,主页显示帖子列表,用户可以 upvote , 然后帖子按热度排序,热度定义为 帖子获得的 upvote 数量与帖子存在时间的比值。

然后每次 帖子得到一个 upvote,就更新一下帖子的热度。

问题在于,如果一个帖子很久没有人 upvote,那这个帖子的更新热度 action 就很久不会被触发。

我只能想到每隔一段时间(比如说一小时)全表更新热度一次。

请问有没有办法定时执行这样的任务呢?或者其实这个问题根本就有更好地解决方案?

谢谢。

gem 'whenever'

#1 楼 @kungs thx, 这个我也搜到了... 看上去像是 cron 加了个套,rails 自己是不能定时任务的是么?

确实是 cron 的封装,rails 自己能不能做定时,我不知道。

这种定时 job,一般框架都不带,就算带上,大多也是鸡肋,有专业的定时 job 来做更好。也可以减轻框架的负担。

#2 楼 @blacktulip 请问定时任务如何调用 rails 中的 controller,model 方法?

You need to Sign in before reply, if you don't have an account, please Sign up first.