如何设置管理员批准模型的编辑

had*_*ees 6 versioning ruby-on-rails models paper-trail-gem

我需要一个普通用户可以编辑模型的系统,但是在管理员批准之前,编辑实际上不会发生.我发现了一个名为paper_trail的宝石,它确实有模型版本,但并不特别支持我想要做的事情.我想知道其他人是如何处理这个问题的.我应该补充一点,我希望能够让用户同时进行编辑.它们不是很复杂,例如一个是别名.

更复杂的部分可能是多个用户编辑相同模型并尝试进行某种合并的情况.

jes*_*iss 1

一种方法是通过版本批准进行版本控制。

每次编辑都会创建模型对象及其关联的新版本。在任何时候,任何模型对象都只有一个“当前”版本(及其在数据库中的表示形式)。

如果两个用户提交两个单独的编辑,则会创建两个“待处理”版本。

管理员可以通过将当前版本移动到新的“待处理”版本来批准编辑。合并也可以完成,但这可能是非常特定于领域的,并且可能导致冲突,因此保留单独的版本无论如何都是明智的。

有几种方法可以实现这一点,最好的方法取决于情况的动态。

我建议您了解 Git 的工作原理,然后尝试对您的系统进行建模。某种指向 HEAD 模型对象的指针,具有修订历史记录以及将 HEAD 移动到不同修订的能力。合并也可以像 Git 一样工作。

希望有帮助。