【问题标题】:Updating Models with Approval requirement更新具有批准要求的模型
【发布时间】:2013-01-10 13:26:03
【问题描述】:
RoR 3
我有一个包含一些细节的用户模型,其中很少有可编辑但需要批准。
我想知道如下更新模型的最佳做法是什么。
- 用户修改了一些数据,数据发送审批
- 用户仍然可以看到旧数据。
- 版主批准更改。
- 用户看到新数据
我目前的想法是将它分成两个模型。
- 用户模型
- 个人资料模型
用户模型包含当前配置文件的ID,当用户更新他的配置文件时,他会添加一个新的配置文件模型,当管理员批准相同时,相关的配置文件模型将链接到用户模型。 (旧的可能会被销毁)。
其他想法是
- 每个属性都有 2 个属性(但编辑量会很小)
- 由于所有可编辑条目都是字符串,并且仅用于显示,实际模型将包含当前值和未经批准的旧值的转义 JSON。
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-3
model-view-controller
【解决方案1】:
当前的想法肯定会奏效。不过要考虑的事情:
如果用户进行了 2 次或更多更改而前一个更改尚未获得批准,会发生什么情况?他可能会更改不同的属性或对先前更改的属性进行另一项更改。系统必须能够将这些更改合并在一起,因为它们会从不同的基础(不同的模型)分支出来。
也许更好的解决方案是拥有当前的个人资料并等待被批准个人资料 (WTBA)。
- 当没有要批准的更改时,用户会看到当前配置文件。
- 用户进行更改,系统将创建一个 WTBA 配置文件。
- 用户看到了 WTBA 配置文件(但没有其他人看到)。
- 用户进行另一项更改,系统会将更改保存到 WTBA 配置文件(不创建新配置文件)。
- 版主批准了 WTBA 配置文件,此时 WTBA 成为当前配置文件,我们又回到了 #1。