2016-09-21 4 views
0

Я использую paper_trail для функции отмены/повтора на моем сайте, и у меня возникла проблема, когда я звоню reify.save по version тем, что на save и создается новое PaperTrail::Version.Как временно отключить PaperTrail при обновлении версии?

Есть ли способ отключить PaperTrail во время сохранения объекта reified?

Я понимаю, что 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 
Смежные вопросы