对于我目前正在开发的项目,我需要实现对象版本控制.不幸的是,我需要保持每个对象的完整历史记录,因此像Papertrail这样的单表解决方案将很快变得不可管理.然而,我喜欢的Papertrail的功能,但是,我无法在每个模型的单个表的解决方案中找到(如acts_as_versioned).
>能够存储来自控制器和模型的元信息
>数据被序列化,因此模式更改不会修改版本表
>用于遍历版本的强大方法
>自动跟踪变更责任
还有一些Papertrail没有的功能将是奖金:
>内置版本支持
>差异而不是完整版本
我目前正在考虑为Papertrail分配每个模型的单独表格,但是如果有现有的解决方案,则希望节省这些费用.
更新:
Vestal版本默认使用单个表,但通过为每个模型提供一个自定义版本类,并使用ActiveRecord的“set_table_name”方法,我可以为每个模型创建单独的表. Vestal版本也内置了diff支持,尽管它的界面不如Papertrails那么强大.它也缺乏协会支持.
更新2:
由于papertrail似乎是一个更加活跃的项目,我已经分配了宝石,并添加了类似于vestal版本的自定义类支持,现在允许为每个模型定义单独的表.我的叉子在这里,但我希望很快将它拉入主项目存储库.
https://github.com/benzittlau/paper_trail