如何在rails中为update_all触发ActiveRecord回调(has_paper_trail)

时间:2015-03-09 12:20:19

标签: ruby-on-rails

当我更新所有作者 papertrail不会在版本表中创建记录b' coz update_all wan触发ActiveRecord回调

Billing.update_all( "author = 'David'", "title LIKE '%Rails%'" )

1 个答案:

答案 0 :(得分:0)

ActiveRecord update_all不会实例化对象,也不会触发回调。从版本6.0.2开始,使用update_all或批量更新时,Airblade仍然不会在版本表中插入新版本。请参阅问题#337

如果您一次处理少量数据,可以通过在Rails 5 docs中的关系上调用update来触发回调。

Billing.where("title LIKE '%Rails%'").update(author: 'David')

如果您使用的是以前版本的Rails,则需要遍历对象集合并在每个实例上调用update。