Управление версиями Rails ActiveStorage (с помощью paper_trail или чего-то подобного)

#ruby-on-rails #rails-activestorage #paper-trail-gem

Вопрос:

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

 class User < ApplicationRecord
  has_paper_trail
  has_one_attached :image
end
 

Я решил использовать paper_trail gem, потому что мне нужно управление версиями для пользовательских атрибутов.
Однако я заметил, что не знаю, как получить информацию о версиях для изображения.

   PaperTrail::Version.where(item_type: "User").first.object
=> "---nemail:XXXXn'ncreated_at: 2021-10-28 13:06:15.206202000nupdated_at: 2021-10-28 13:06:19.789124000n"
 

Кто-нибудь еще знает, как получить предыдущую версию ActiveStorage?
Я использую paper_trail gem, так что будет лучше, если paper_trail сможет это сделать.

Комментарии:

1. has_one_attached это ассоциация. PaperTrail не записывает данные ассоциации. Вы можете написать пользовательские метаданные или попробовать плагин paper_trail-association_tracking.

2. Вы показываете мне очень простую, но отличную идею. Спасибо.

Ответ №1:

Хорошо, я немного опоздал на вечеринку, но я обнаружил необходимость отслеживания версий в моих моделях ActiveStorage. Вот что сработало для меня:

  1. Создайте новый файл в /config/initializers вызываемом active_storage.rb
  2. В новый /config/initializers/active_storage.rb файл добавьте следующий код:
 Rails.application.config.to_prepare do
  ActiveStorage::Record.has_paper_trail
end
 
  1. Перезагрузите свой Rails-сервер

Теперь вы должны увидеть отслеживание версий для всех подклассов ActiveStorage::Record .

Комментарии:

1. О, вечеринка все еще продолжается, спасибо! Я попробую.