我有一个使用状态机模式的 ruby 应用程序。用户提交申请,并且在获得批准和审查后,这些申请将对其他用户可见。
该应用程序还使用 ActiveAdmin 允许管理员将应用程序从“草稿”状态移动到“已批准”状态,并最终进入“成功发布”状态或“退休”状态。
我的问题是我无法弄清楚如何赋予管理员在所有州执行操作的特殊权限。例如,我希望管理员能够在任何状态下编辑应用程序,即使用户一旦获得批准就无法对其进行编辑。我有一个默认为 false 的“可编辑”方法,但是当我想允许用户编辑应用程序时,我偶尔会设置为 true。
def editable?
true
end
我想也许可以创建一个名为“admin_editable”的类似方法?并在所有状态下将其设置为 true。但这似乎是一个黑客。
有最佳实践吗?我应该一起废弃状态机吗?或者,我如何允许管理员编辑项目而不管其状态如何?