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