【问题标题】:How to setup admin approval a model's edits如何设置管理员批准模型的编辑
【发布时间】:2011-09-26 09:20:17
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails versioning models paper-trail-gem


    【解决方案1】:

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

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

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

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

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

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

    希望对您有所帮助。

    【讨论】:

    • 我不认为创建其他版本的模型是可行的方法,因为您将使用其他版本污染数据库。我实际上认为必须有一种方法来修改 paper_trail 来做到这一点。就像创建新版本但不更新当前对象一样。
    • 好吧,您可以使用 cron 或批准清除旧版本,但本质上是相同的问题。您创建新版本,然后删除您不再关心的版本。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 2015-11-09
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 2018-11-27
      相关资源
      最近更新 更多