首页 > 解决方案 > 为现有数据库记录创建版本

问题描述

我的 Ruby on Rails 应用程序的数据库中有一堆表,对于每个表,多个利益相关者都参与了更改。越来越难知道谁做了什么更改,所以我决定添加paper_trail gem并为每个更改创建一个版本。

问题是数据库已经在每个表中包含大量数据,我不想删除它们。有没有办法可以创建一个object_change版本,将现有数据视为第一个版本,将事件类型视为create.

考虑用户表的模式

t.citext   "email"
t.string   "first_name"
t.string   "last_name"
t.string   "mobile"

样本记录

#<User id: 1, email: "test@example.com", first_name: "Example", last_name: "User", mobile: "1234567890", created_at: "2020-05-30 11:59:32", updated_at: "2020-05-30 11:59:32"> 

运行时的预期结果User.find(1).versions.last.changeset

=> {"id"=>[nil, 1], "email"=>[nil, "test@example.com"], "first_name"=>[nil, "Example"], "last_name"=>[nil, "User"], "mobile"=>[nil, "1234567890"], "created_at"=>[nil, Sat, 30 May 2020 11:59:32 UTC +00:00], "updated_at"=>[nil, Sat, 30 May 2020 11:59:32 UTC +00:00]}

标签: ruby-on-railspaper-trail-gem

解决方案


推荐阅读