2016-09-21 43 views
0

我在我的網站中使用paper_trail來取消/重做功能,當我在version上調用reify.save時出現問題,savePaperTrail::Version被創建。如何在編輯版本時暫時禁用PaperTrail?

有沒有辦法在保存物化對象時關閉PaperTrail?

據我所知,PaperTrail.enabled = false是可能的,但我不希望其他更改同時進行不記錄。

我的理想的解決辦法是沿着線的東西:

PaperTrail.disable { version.reify.save }

回答

0

我曾經在這樣的混合來實現類似的東西:

def without_papertrail 
    PaperTrail.disable 
    yield if block_given? 
    PaperTrail.enable 
end 

然後,你可以做類似的東西您的目標

without_papertrail { version.reify.save } 
+0

這正是我在用,但它仍然打開PaperTrail完全關閉,而不是僅僅將其關閉了被物化的對象。 – turbogeek421

0

您可以禁用文件記錄了一個特定的模式,使用以下兩種語法:

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