6

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

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

4

2 回答 2

1

一种方法是在版本批准的情况下进行版本控制。

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

如果两个用户提交两个单独的编辑,这将创建两个“待定”版本。

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

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

我建议看看 Git 是如何工作的,然后尝试为你的系统建模。某种指向带有修订历史的 HEAD 模型对象的指针,并且能够将 HEAD 移动到不同的修订。合并也可以类似于 Git。

希望有帮助。

于 2011-06-30T23:11:28.240 回答
0

我正在研究同样的问题,即批准修订,我可以遇到这个问题,我怀疑你可以用paper_trail做类似的事情。

于 2011-12-11T12:45:13.040 回答