我是铁轨新手。我想使用paper_trail gem来跟踪我的记录的版本,但当我使用update_columns方法时无法做到这一点。我认为重写update_columns方法可能会对我有所帮助,但我不知道该如何编写代码?
使用update_column方法更新ActiveRecord模型时,如何跳过除纸迹之外的所有回调。。我使用update_columns方法。
根据Rails文档,update_columns
方法跳过回调。这包括PT.安装的回调
我是铁路新手。。。我认为重写update_columns方法可能会对我有所帮助。。?
如果您是rails的新手,则不应覆盖核心rails方法。
解决方案
按偏好降序排列:
- 通常,我建议使用
update
而不是update_columns
。但是,您希望跳过回调的适当子集 - 您可以
touch
记录,PT将记录一个只有updated_at
更改的Version
。如果您只需要object
而不需要object_changes
,那么这就足够了 - 您可以像使用任何其他型号一样使用
PaperTrail::Version.create
。这是公共的API,但您要负责传递正确的属性 - 您可以使用
PaperTrail::RecordTrail#record_update
。这是专用API,可随时更改,恕不另行通知