Ruby on rails 修订控制如何在quora上工作?数据库设计
嗯,我见过一些插件创建一个版本表来跟踪对特定型号的修改,但不能像quora节目那样轻松完成 到目前为止,我有一张这样的桌子:Ruby on rails 修订控制如何在quora上工作?数据库设计,ruby-on-rails,database-design,version-control,relational-database,Ruby On Rails,Database Design,Version Control,Relational Database,嗯,我见过一些插件创建一个版本表来跟踪对特定型号的修改,但不能像quora节目那样轻松完成 到目前为止,我有一张这样的桌子: id 项目类型:具体说明模型修订的内容:“主题” 项目id 事件:如果是:“编辑、添加、还原、删除” 谁:谁触发了事件 列:更改了“主题”中的哪一列的值。“主题.照片\u url” 新建:新值:“ 旧值旧值:“” 修订版\u rel:指向过去的修订版 时间戳 有人能给我一些关于这个设计的帮助和指导吗?我担心性能、错误的列、缺少的列等等 id | item_typ
- id
- 项目类型:具体说明模型修订的内容:“主题”
- 项目id
- 事件:如果是:“编辑、添加、还原、删除”
- 谁:谁触发了事件
- 列:更改了“主题”中的哪一列的值。“主题.照片\u url”
- 新建:新值:“
- 旧值旧值:“”
- 修订版\u rel:指向过去的修订版
- 时间戳
id | item_type | item_id | event | who | column | new | old | revision_rel | date
________________________________________________________________________________________________________
1 | Topic | 2 | edit | Luccas | photo | pic.png | oldpic.png | null | m:d:y
2 | Topic | 2 | revert | Chris | photo | oldpic.png | pic.png | 1 | m:d:y
有一些宝石已经可以满足您的需求。您是否研究过: 看看现有的宝石: 我正在使用audited(以前是acts_as_audited)处理非常类似的事情:
我将在稍后编辑我的问题,说明此插件不满足我的需要。我希望按列而不是整行进行版本控制。我将在稍后更好地描述这一点以及我是如何实现的。但感谢您的回答。您可能不再需要此功能了……但如果您记录所有事件,您可能不需要存储旧值和新值s(创建、编辑、销毁)。版本2的旧值是版本1的新值。取决于您的用例。