Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Pundit 2设置rails\u admin-我需要rails\u admin\u Pundit gem吗?没有它怎么办?_Ruby On Rails_Rails Admin_Pundit - Fatal编程技术网

Ruby on rails 使用Pundit 2设置rails\u admin-我需要rails\u admin\u Pundit gem吗?没有它怎么办?

Ruby on rails 使用Pundit 2设置rails\u admin-我需要rails\u admin\u Pundit gem吗?没有它怎么办?,ruby-on-rails,rails-admin,pundit,Ruby On Rails,Rails Admin,Pundit,我正在我的应用程序中介绍。我已经使用Pundit 2进行授权。我想使用Pundit来处理授权问题——现在,只需让每个管理员都能访问RailsAdmin,并将其他用户拒之门外。在未来,它可能会比这更复杂 我看到有一颗宝石叫。然而,让我困惑的是,关于这块宝石的说法: (此gem适用于Pundit 1.x的用户-Pundit 2.x API在RailsAdmin中具有内置支持) 但是我在Rails管理员中找不到如何使用Pundit 我已经在config/initializers/rails\u adm

我正在我的应用程序中介绍。我已经使用Pundit 2进行授权。我想使用Pundit来处理授权问题——现在,只需让每个管理员都能访问RailsAdmin,并将其他用户拒之门外。在未来,它可能会比这更复杂

我看到有一颗宝石叫。然而,让我困惑的是,关于这块宝石的说法:

(此gem适用于Pundit 1.x的用户-Pundit 2.x API在RailsAdmin中具有内置支持)

但是我在Rails管理员中找不到如何使用Pundit

我已经在
config/initializers/rails\u admin.rb
中用:pundit取消了对行
config.authorize\u的注释,但是在这之后,没有关于没有rails\u admin\u pundit gem怎么办的线索

如果我什么都不做,我会得到:

undefined method `policy' for #<RailsAdmin::MainController:0x0000561fdeaa60a0> 
我可以在这里和那里找到解决方案,但他们假设使用rails\u admin\u pundit gem

我很想像这里所说的那样去做,只是暂时不要使用Pundit和依赖
user.admin?
方法


你知道在哪里可以找到关于一起使用RailsAdmin和Pundit 2的文档吗?或者如何联系gem的作者以了解我们应该如何做?

维基上说
RailsAdminPundit
是为“Pundit 1.x的用户”设计的。您说您正在使用
Pundit 2
。维基称“Pundit 2.x API在RailsAdmin中具有内置支持”。因此,
RailsAdminPundit
似乎与您当前的情况无关。我误读了吗?此外,你考虑的方法从表面上看似乎是合理的。你有什么理由担心这种方法吗?你能试着把
config.parent\u controller=“ApplicationController”
放在你的
rails\u admin.rb
中,然后重新启动服务器,看看它在没有gem的情况下是否能工作吗?@Toribio在这种情况下取得了进展!如果我放置父控制器,然后在ApplicationPolicy中放置一个
仪表板?
方法,我可以看到一个空的仪表板。如果我尝试在每个CRUD操作上放置一个
@user.admin?
方法,它会在
lib/rails\u admin/extensions/pundit/authorization\u adapter.rb:39:in authorized?
中再次为#“
引发
“未定义的方法导出”
。我认为您需要在默认的应用程序策略文件中定义rails管理策略。其中之一是
导出?
。我只是不完全确定如何在新的included pundit扩展中实现这些策略,但我认为这就像
rails\u admin\u pundit
中的示例一样。wiki说
RailsAdminPundit
是为“pundit 1.x的用户”设计的。您说您正在使用
Pundit 2
。维基称“Pundit 2.x API在RailsAdmin中具有内置支持”。因此,
RailsAdminPundit
似乎与您当前的情况无关。我误读了吗?此外,你考虑的方法从表面上看似乎是合理的。你有什么理由担心这种方法吗?你能试着把
config.parent\u controller=“ApplicationController”
放在你的
rails\u admin.rb
中,然后重新启动服务器,看看它在没有gem的情况下是否能工作吗?@Toribio在这种情况下取得了进展!如果我放置父控制器,然后在ApplicationPolicy中放置一个
仪表板?
方法,我可以看到一个空的仪表板。如果我尝试在每个CRUD操作上放置一个
@user.admin?
方法,它会在
lib/rails\u admin/extensions/pundit/authorization\u adapter.rb:39:in authorized?
中再次为#“引发
“未定义的方法导出”
。我认为您需要在默认的应用程序策略文件中定义rails管理策略。其中之一是
导出?
。我只是不完全确定如何在新的included pundit扩展中实现这些策略,但我认为这就像
rails\u admin\u pundit
中的示例一样。
        def policy(record)
          @controller.send(:policy, record)
        rescue ::Pundit::NotDefinedError
          ::ApplicationPolicy.new(@controller.send(:pundit_user), record)
        end