Версии 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

Ответы на вопрос(2)

Ваш ответ на вопрос