Управление версиями объектов в Rails, например Papertrail, но отдельные таблицы

Для проекта, над которым я сейчас работаю, мне нужно реализовать управление версиями объектов. К сожалению, мне необходимо вести полную историю каждого объекта, поэтому решение с одной таблицей, такое как Papertrail, быстро станет неуправляемым. Однако есть функции Papertrail, которые мне нравятся, но которые я не смог найти в решении с отдельными таблицами для каждой модели (например, actions_as_versioned).

  • Возможность хранить метаинформацию как от контроллера, так и от модели
  • Данные сериализуются, поэтому изменения схемы не изменяют таблицу версий
  • Мощные методы просмотра версий
  • Автоматическое отслеживание ответственности за изменения

Есть также некоторые функции, которых нет в Papertrail, которые были бы бонусами:

  • Встроенная поддержка различий версий
  • Дифференциальные вместо полных версий

В настоящее время я рассматриваю возможность разветвления Papertrail для использования отдельных таблиц для каждой модели, но хотел бы сэкономить эти усилия, если есть существующее решение.

Обновление: Vestal Versions по умолчанию использует одну таблицу, но, предоставив собственный класс версии для каждой модели и используя метод «set_table_name» ActiveRecord, я смог создать отдельные таблицы для каждой модели. Vestal Versions также имеет встроенную поддержку различий, хотя ее интерфейс не такой мощный, как Papertrails. Также отсутствует поддержка ассоциаций.

Обновление 2: Поскольку papertrail кажется более активным проектом, я раздвоил драгоценный камень и добавил поддержку настраиваемых классов, аналогичную версиям vestal, которые теперь позволяют определять отдельные таблицы для каждой модели. Моя вилка здесь, но я надеюсь, что в ближайшее время она будет перенесена в основной репозиторий проекта. https://github.com/benzittlau/paper_trail

13
задан Ben Zittlau 24 March 2011 в 21:07
поделиться