创建paper_trail新版本而不更新现有记录

问题描述 投票:0回答:1

我已经将paper_trail与项目模型集成在一起。

正常流量:-

每当更新模型中的项目记录时,就会在版本表中创建具有更改的新版本。

条件: -

无论何时更新任何项目,而不是在项目模型中更新项目记录本身,我都想创建一个新的版本记录。有什么办法吗?

我正在使用Rails 5.1.6.2,paper_trail(10.3.0)

ruby-on-rails ruby rubygems ruby-on-rails-5 paper-trail-gem
1个回答
0
投票

我尝试使用PaperTrail::Events::Update,尽管它不是公共API(它可能随时更改而不会发出警告)

project.name = 'new name'
update = PaperTrail::Events::Update.new(project, ....)
PaperTrail::Version.create!(update.data)

同样,这不是公共API,因此您将使保修无效:)

只要任何项目得到更新,..

我只将其放入ProjectController#update操作中。如果确实需要,可以使用类似before_save的模型回调,并使用throw :aborthalt回调链,但是您必须解决隐式事务。

© www.soinside.com 2019 - 2024. All rights reserved.