восстановить основной объект до определенной версии с помощью Paper Trail - PullRequest
1 голос
/ 02 октября 2019

Как я могу применить изменения, представленные в конкретной версии, к основному объекту?

Например:

Допустим, существует модель проекта. Всякий раз, когда запись проекта обновляется, система создает версию. Теперь у меня есть требование, чтобы пользователь мог переместить эту запись проекта в любую конкретную версию и ТОЛЬКО обновить все атрибуты, которые были изменены в этой версии.

 Project 1 has following Versions:
  V5 
  V4
  V3
  V2
  V1

 if user wants he can move Project to any of these 5 Versions and apply the changes 
 made in that version in project record.

Я использую

ruby ​​2.5.3, Rails 5.1.6.2 и paper_trail (10.3.0)

1 Ответ

1 голос
/ 02 октября 2019

Документы говорят, что каждая версия также имеет атрибут create_at. Таким образом, вы можете найти версию в определенный момент времени:

widget = widget.paper_trail.version_at(1.day.ago)  # the widget as it was one day ago
widget.save                                        # reverted

Если вы знаете, какую версию хочет пользователь, вы также знаете create_at, чтобы вы могли установить правильную версию.

wanted_version = # Find the correct version that the user wants
widget = widget.paper_trail.version_at(wanted_version.created_at)
widget.save
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...