我正在寻找有关在事件发生时保存某些(不同)记录的快照的一些想法,例如用户从我的应用程序获取文档,以便以后可以重新生成该文档。你推荐什么策略?我应该使用与具有当前值的表相同的表还是使用历史表?你知道有什么插件可以帮助我完成这项任务吗?请分享您的想法和解决方案。
最佳答案
为此有几个插件。
Acts_audited
作为已审计的行为为所有可审计对象创建一个表,并且不需要更改现有表。您可以在每次更改时输入,更改以哈希形式存储在备注字段中,即更改类型 (CRUD)。只需在应用程序 Controller 中指定要审核的模型的单个语句即可轻松设置。 回滚取决于您,但信息就在那里。因为存储的信息只是构建整个对象的更改,可能由于后续更改而变得困难。
Acts_as_versioned
设置有点复杂 - 您需要为每个要版本化的对象创建一个单独的表,并且您必须将版本 ID 添加到现有表中。回滚非常容易。 github 上的分支提供了自上一版本以来更改的散列,因此您可以轻松突出显示差异(这是我使用的)。我猜这是最受欢迎的解决方案。
我没有经验的:acts_as_revisable。下次我需要版本控制时,我可能会试试这个,因为它看起来更复杂。
关于ruby-on-rails - 在 Rails 中存储/检索历史数据的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752240/