每次模型中的记录更改时如何运行rake任务? (最佳实践)

时间:2011-11-09 19:48:32

标签: ruby-on-rails performance cron rake

我想在每次更新记录时运行cron rake任务 - 即在创建/更新新记录后的某个时间,cron rake任务将对记录执行一些处理并保存结果。

但是,此任务是处理器密集型的,只有在用户更新记录时才运行它。

以编程方式确定rake任务是否已处理特定记录(并且用户根本没有更改过)的最佳方式是什么?

我正在考虑为每条记录生成一个哈希并使用它来查看它是否已更改。 必须有更有效的方法来执行此操作。

感谢您的帮助, 亚历

1 个答案:

答案 0 :(得分:2)

我认为你应该使用DelayedJob而不是Cron / Whenever。

无论如何,你不认为在验证或保存过滤器之前/之后做它会更好吗?如果您将此功能实现为before_save过滤器,那么您可以使用脏属性。有关您可以在此处找到的脏属性的更多信息:http://ryandaigle.com/articles/2008/3/31/what-s-new-in-edge-rails-dirty-objects