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

blacktulip · 2012年12月11日 · 最后由 patxiao 回复于 2014年04月04日 · 2774 次阅读

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

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

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

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

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

谢谢。

gem 'whenever'

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

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

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

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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号