我正在编写一个模型来记录对其他模型所做的更改,以便记录每个属性更改。我正在寻找有关如何最好地构建更改记录表的输入。
例如,我有一个User
带有name
属性的模型。Change
当该用户的名称从更改为时,我想将记录保存到数据库Bob
中Ted
。
此外,如果用户User
同时更新多个属性,我想将这些属性记录为单个Change
. 例如, aUser
分别将name
和email
属性从Bob
和更改bob@bobsdomain.com
为Ted
和ted@teddy.com
。
正在更改的给定对象的属性集是任意的。您将如何构建表格?
目前,我正在做类似以下的事情(简化):
Changes:
user_id:integer
changed_fields:string
old_values:text
new_values:text
在上述示例中,这些记录如下所示:
:changed_fields => "name",
:old_values => "Bob",
:new_values => "Ted"
和
:changed_fields => "name,email",
:old_values => "Bob,bob@bobsdomain.com",
:new_values => "Ted,ted@teddy.com"
在Change
模型上,我有特殊的 getter/setter 方法,可以解析输入/输出以映射到特定格式。
有没有更好的方法来模拟这种事情?
如果不是,考虑到值可以是任意的,那么格式化数据库值以使解析输入/输出效果最佳的最佳方法是什么。
我使用 Postgres 作为我的数据库,使用 ActiveRecord 作为 ORM。