Создать новую версию paper_trail без обновления существующей записи - PullRequest
0 голосов
/ 30 сентября 2019

Я интегрировал paper_trail с моделью проекта.

Нормальный поток: -

При каждом обновлении записи проекта в модели создается новая версия с изменениями. в таблице версий.

Требование: -

Всякий раз, когда любой проект обновляется, а не обновляет саму запись проекта в модели проектов, я хочу создать новую запись версии. Есть ли способ сделать это?

Я использую Rails 5.1.6.2, paper_trail (10.3.0)

1 Ответ

0 голосов
/ 01 октября 2019

Я бы попробовал использовать 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 :abort до остановку цепочки обратных вызовов, но вам придется обходить неявную транзакцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...