我正在编写一个模型来记录对其他模型所做的更改,以便记录每个属性更改。我正在寻找有关如何最好地构建更改记录表的输入。
例如,我有一个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。