Версии Vestal, такие как Papertrail, используют одну таблицу для хранения версионных объектов, поэтому не подходят для моего приложения, как описано в исходном посте.
роекта, над которым я сейчас работаю, мне нужно реализовать управление версиями объектов. К сожалению, мне нужно вести полную историю каждого объекта, поэтому решение для одной таблицы, такое как Papertrail, быстро станет неуправляемым. Однако мне нравятся функции Papertrail, которые я не смог найти в решении с отдельными таблицами для каждой модели (например, activ_as_versioned).
Возможность хранения метаинформации как контроллера, так и моделиДанные сериализуются, поэтому изменения схемы не изменяют таблицу версий.Мощные методы обхода версийАвтоматическое отслеживание изменений ответственностиЕсть также некоторые функции, которые Papertrail не имеет, которые будут бонусы:
Встроенная поддержка diff различийДифференциал вместо полных версийВ настоящее время я рассматриваю возможность использования Papertrail для использования отдельных таблиц для каждой модели, но хотел бы сэкономить эти усилия, если есть существующее решение.
Обновить: Версии Vestal по умолчанию используют одну таблицу, но, предоставляя собственный класс версий для каждой модели и используя метод «set_table_name» ActiveRecord, я смог создать отдельные таблицы для каждой модели. Vestal Versions также имеет встроенную поддержку diff, хотя его интерфейс не такой мощный, как Papertrails. Также не хватает поддержки ассоциаций.
Обновление 2: Поскольку papertrail кажется более активным проектом, я разветвлял гем и добавил поддержку пользовательских классов, аналогичную версиям vestal, которая теперь позволяет определять отдельные таблицы для каждой модели. Мой форк уже здесь, но я надеюсь, что он скоро будет добавлен в основной репозиторий проекта.https://github.com/benzittlau/paper_trail