2013-01-23 52 views
1

我有一个使用状态机模式的红宝石应用程序。用户提交申请,经批准和审核后,这些申请将对其他用户可见。管理员应该如何与状态机交互?

该应用程序还使用ActiveAdmin允许管理员将应用程序从“草稿”状态移至“已批准”状态,最终移至“已成功发布”状态或“已退休”状态。

我的问题是,我不知道如何给予管理员特殊权利在所有状态下执行操作。例如,我希望管理员能够在任何状态下编辑应用程序,即使用户在获得批准后也无法进行编辑。我有一个默认为'false'的可编辑方法,但当我想允许用户编辑应用程序时,我偶尔会设置为true。

def editable? 
    true 
end 

我想也许创建一个类似的方法称为“admin_editable?”并在所有状态下将其设置为true。但它看起来像一个黑客。

是否有一个最佳做法?我应该一起取消状态机吗?或者,我如何获得允许管理员编辑项目,而不管其状态如何?

+0

请参阅http://stackoverflow.com/questions/13944703/rails-cancan-and-state-machine-authorizing-states – bjelli

回答

0

cancan这样的宝石会帮助你吗?

+0

这是可能的。我通常使用CanCan来管理用户的行为,但我想我可以在这个应用程序中使用它来管理应用程序的行为。 –