ruby-on-rails - 在 Rails 中存储/检索历史数据的技术

标签 ruby-on-rails database database-design

我正在寻找有关在事件发生时保存某些(不同)记录的快照的一些想法,例如用户从我的应用程序获取文档,以便以后可以重新生成该文档。你推荐什么策略?我应该使用与具有当前值的表相同的表还是使用历史表?你知道有什么插件可以帮助我完成这项任务吗?请分享您的想法和解决方案。

最佳答案

为此有几个插件。

Acts_audited

作为已审计的行为为所有可审计对象创建一个表,并且不需要更改现有表。您可以在每次更改时输入,更改以哈希形式存储在备注字段中,即更改类型 (CRUD)。只需在应用程序 Controller 中指定要审核的模型的单个语句即可轻松设置。 回滚取决于您,但信息就在那里。因为存储的信息只是构建整个对象的更改,可能由于后续更改而变得困难。

Acts_as_versioned

设置有点复杂 - 您需要为每个要版本化的对象创建一个单独的表,并且您必须将版本 ID 添加到现有表中。回滚非常容易。 github 上的分支提供了自上一版本以来更改的散列,因此您可以轻松突出显示差异(这是我使用的)。我猜这是最受欢迎的解决方案。

我没有经验的:acts_as_revisable。下次我需要版本控制时,我可能会试试这个,因为它看起来更复杂。

关于ruby-on-rails - 在 Rails 中存储/检索历史数据的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752240/

相关文章:

sql - 创建用于存储高尔夫分数的可扩展数据库模式

ruby-on-rails - 具有几乎相同属性的模型

ruby-on-rails - 在本地存储 CopyCopter 结果

ruby-on-rails - 带有子域的 capybara - default_host

mysql - 如何在Mysql中使用@符号?

mysql - 在整个数据库而不是仅在一个表中拥有唯一行 ID 的最佳方法是什么?

ruby-on-rails - 使用参数测试邮件程序的最佳方法

C# - 使用 MySql 数据库填充 ComboBox 时出现意外结果

sql - MSSQL - 具有多个关系的两个表

mysql - 单个表或拆分表在数据库中保存这些记录?