我在我的网站中使用paper_trail
进行撤消/重做功能,当我在reify.save
和{version
上save
上调用PaperTrail::Version
时出现问题{1}}被创建。
有没有办法在保存具体物体时关闭PaperTrail?
我知道PaperTrail.enabled = false
是可能的,但我不希望在同一时间进行其他更改以便不进行录制。
我理想的解决方案将是:
PaperTrail.disable { version.reify.save }
答案 0 :(得分:2)
我曾经通过混合这样的东西来完成类似的事情:
def without_papertrail
PaperTrail.disable
yield if block_given?
PaperTrail.enable
end
然后你可以做一些与你的目标类似的事情
without_papertrail { version.reify.save }
答案 1 :(得分:1)
您可以使用以下两种语法之一禁用特定型号的纸质跟踪:
m = MyModel.find(123)
m.paper_trail.without_versioning do
# No versioning of `m` happens in this block
end
注意:由于在模型实例上调用它,似乎这可能会自然地禁用该实例上的版本控制,但是这种语法会禁用整个模型的版本控制。
另一种语法:
MyModel.paper_trail.disable
# No versioning of MyModel happens here
MyModel.paper_trail.enable
答案 2 :(得分:0)
自述文件:https://github.com/paper-trail-gem/paper_trail#7-testing
PaperTrail.enabled = false
答案 3 :(得分:0)
截至gem documentation,到目前为止,gem版本 10.3.0 的正确实现方法是:
PaperTrail.request.disable_model(Banana)
# changes to Banana model do not create versions,
# but eg. changes to Kiwi model do.
PaperTrail.request.enable_model(Banana)