Gab*_*ley 6 ruby ruby-on-rails paper-trail-gem
这与#837有点相关,因为我的模型上有一个大数据列,但是我认为我可能会得到与该问题中提出的相反的更好的服务 - 即维护对象列而不是 object_changes 列.
我们一直在没有versions.object_changes 列的情况下运行。现在我已经添加了这个列,我意识到我正在为 object_changes 中的数据列写入很多我不关心的数据 - 因为对数据的微小更改会导致它被有效地写出 3 倍(一次在前后object两次object_changes)。
我不认为跳过或忽略是我想要的,因为我确实希望对数据进行更改以生成新版本。
我应该走自定义版本模型路线吗?或者你有什么推荐?
一些选项,按推荐的降序排列(最强烈推荐在前):
version_limit(支持) - 通过限制您为给定记录创建的版本数,使用version_limit. (https://github.com/airblade/paper_trail#2e-limiting-the-number-of-versions-created)object_changes列的自定义表。排除实验关联功能(track_associations必须是false[默认])recordable_object_changes,方法 1(不支持)- 自定义版本模型,但仍在使用该versions表。覆盖#paper_trail以返回RecordTrail其覆盖的自定义子类RecordTrail#recordable_object_changes。覆盖这些方法会破坏您的保修。recordable_object_changes,方法 2(不支持) - 覆盖RecordTrail#recordable_object_changes,添加类检查条件。除了你想要破解的模型之外,所有的都调用 super 。覆盖此方法会破坏您的保修。object_changes,而不是object。可能是个坏主意,看起来真的很hacky。最后,我很乐意查看一个 PR,它添加了一个新功能,能够在每个模型的基础上配置哪些数据应该写入object_changes列。如果你认真对待这个问题,并看到它完成,请打开一个新问题,以便我们可以进一步讨论。有几种不同的设计可以工作。
2019 年更新:我们现在有object_changes_adapter它仅适用于专家用户,可能不是我的最佳推荐。
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |