Ruby on rails 修订控制如何在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

嗯,我见过一些插件创建一个版本表来跟踪对特定型号的修改,但不能像quora节目那样轻松完成

到目前为止,我有一张这样的桌子:

  • 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的新值。取决于您的用例。