Rails 更新数据库的问题

hiveer · 2014年01月07日 · 最后由 hiveer 回复于 2014年01月08日 · 1951 次阅读

请教一个问题,恳求大家不吝赐教: 数据库的一个字段存了一个将来的时间,当前时间>=它的时候,需要更新记录里面的另外一个字段。这个如何实现? 当然写个方法遍历所有,然后检测也是可以的,不知道有没有最优解?

MySQL 的话可以用 event scheduler

  • 简单粗暴的方法 写一个 rake 任务,把符合的数据筛出来处理,或者写一段处理的批处理 sql 然后使用 cron 定期处理 rake 或 sql

  • 比较精细的做法 使用异步任务队列,比如 sidekiq,在生成数据的时候,就把未来要更新的任务放到定期的任务队列中,等候处理

楼上两位的方法应该都能够实现定期的检测和处理,不知道 rails 能不能实现即时处理呢?我在查看他的回调函数的时候,发现 after_find 方法似乎能够在通过 find 方法找到这条记录的时候做一个回调处理,这个方法能用吗?

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