我需要一个普通用户可以编辑模型的系统,但在管理员批准之前,编辑实际上不会发生。我发现了一个名为paper_trail的宝石,它确实有模型版本,但并不特别支持我想做的事情。我想知道其他人是如何处理这个问题的。我应该补充一点,我希望能够让用户同时进行编辑。它们并不复杂,例如一个是别名。
更复杂的部分可能是多个用户编辑同一模型并尝试进行某种合并的情况。
答案 0 :(得分:1)
一种方法是使用版本批准进行版本控制。
每次编辑都会创建模型对象及其关联的新版本。在任何时候,任何模型对象只有一个“当前”版本(它在数据库中的表示)。
如果两个用户提交了两个单独的编辑,则会创建两个“待定”版本。
管理员会通过将当前版本移动到新的“待定”版本来批准编辑。合并也可以完成,但这可能是特定于域的,并且可能导致冲突,因此保持单独的版本将是明智的。
有几种方法可以实现这一目标,最好的方法取决于情况的动态。
我建议看看Git如何工作并在此之后尝试建模您的系统。某种指向HEAD模型对象的指针,具有修订历史记录以及将HEAD移动到不同修订版的能力。合并也可以与Git类似。
希望有所帮助。
答案 1 :(得分:0)
我正在考虑同样的问题,即批准修订,我可以遇到this,我怀疑你可以用paper_trail做类似的事情。