Ruby on rails 如何使用Pundit授权ActiveAdmin资源?

Ruby on rails 如何使用Pundit授权ActiveAdmin资源?,ruby-on-rails,activeadmin,cancan,pundit,Ruby On Rails,Activeadmin,Cancan,Pundit,使用CanCan,可以在全局过滤器之前调用load\u和\u authorize\u resource助手方法(在应用程序\u控制器中)。这将确保所有ActiveAdmin控制器操作也获得了固有授权 但是有了Pundit,就没有这样的load\u和\u authorize\u资源helper方法了。所有权威文档和教程都谈到在每个操作中调用authorize。我对每一个行动都很满意。但是在ActiveAdmin中,默认情况下不会公开这些操作。我是否应该打开每个控制器中的每个操作,然后调用授权,然后

使用
CanCan
,可以在全局
过滤器之前调用
load\u和\u authorize\u resource
助手方法(在
应用程序\u控制器中)。这将确保所有ActiveAdmin控制器操作也获得了固有授权

但是有了
Pundit
,就没有这样的
load\u和\u authorize\u资源
helper方法了。所有权威文档和教程都谈到在每个操作中调用
authorize
。我对每一个行动都很满意。但是在ActiveAdmin中,默认情况下不会公开这些操作。我是否应该打开每个控制器中的每个操作,然后调用
授权
,然后调用
超级

这似乎是错误的。那么,有人能告诉我如何使用Pundit来授权ActiveAdmin中的操作吗

更新

我知道权威授权适配器。我正在使用AA的主分支,我已经将AA配置为使用Pundit适配器,如前所述。我的问题是:如何使用适配器?只需设置
config.authorization\u adapter=ActiveAdmin::PunditAdapter
,它会自动调用ActiveAdmin中每个操作的授权吗?我不这么认为


例如,在CanCan中,即使设置了
config.authorization\u adapter=ActiveAdmin::CanCanAdapter
,您仍然必须将
load\u和\u authorization\u资源设置为一个全局的before\u过滤器,以便自动授权所有AA操作。

ActiveAdmin的主机现在包括一个权威授权适配器。如果您使用的是ActiveAdmin的主分支,那么就可以轻松地使用Pundit。否则,您可以手动将现有的ActiveAdmin添加到旧版本的ActiveAdmin中,尽管可能需要做更多的工作

有关如何添加适配器的更多上下文和详细信息,请参阅


ActiveAdmin设置为使用Pundit授权适配器后,它会检查默认资源操作的授权:显示、索引、编辑、更新、新建、创建和销毁。任何自定义操作都必须手动授权


需要检查的一个细节是,您的权威策略定义了ActiveAdmin所期望的方法。有一个可用的方法作为起点。ActiveAdmin也可能有帮助。

我已经将Pundit适配器设置为我的授权适配器。我已更新问题以添加更多信息。ActiveAdmin会授权默认资源和页面操作。你有一个例子吗?关于这个问题,你能更具体一点吗?我刚刚尝试了一个完全普通的示例应用程序,只有activeadmin、pundit和一个模型。授权似乎运作良好。所以,我想我面临的问题是在我的应用程序中。需要检查它是什么。对我来说这很容易。我已经将PunditModule包括到ApplicationController中,将PunditAdapter添加到ActiveAdmin配置中,并为所有模型创建了策略。它就像一个符咒!