#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. Вот что сработало для меня:
- Создайте новый файл в
/config/initializers
вызываемомactive_storage.rb
- В новый
/config/initializers/active_storage.rb
файл добавьте следующий код:
Rails.application.config.to_prepare do
ActiveStorage::Record.has_paper_trail
end
- Перезагрузите свой Rails-сервер
Теперь вы должны увидеть отслеживание версий для всех подклассов ActiveStorage::Record
.
Комментарии:
1. О, вечеринка все еще продолжается, спасибо! Я попробую.