在我的项目中,我有非常常见的命名空间“admin”。
namespace :admin do
resources :users, except: :show
end
我使用 Pundit gem 来设置适当的授权,但我发现很难与命名空间内的 Controller 一起使用。我的政策组织如下
-policies
-admin
user_policy.rb
application_policy.rb
admin_policy.rb
awesome_policy.rb
非常类似于 Controller 。
但是,当我在 Controller 内部使用“授权”方法时,我只得到一个错误,通知该应用程序“无法找到 UserPolicy”。我的 UserPolicy 看起来像这样:
class Admin::UserPolicy < AdminPolicy
end
那么问题是什么,我应该怎么做才能让 Pundit 看到命名空间内的这些策略?
最佳答案
与新合并commit你可以这样做。
它会自动工作。
更新:
从 0.3 版本有效地删除了不替换功能。但是,可以在 github 上的命名空间分支中获得命名空间功能。 .
您可以在 issue on github 中看到对功能的讨论.
我对那些想要使用 Pundit 命名空间的人的建议 - 暂时不要使用。在过滤器之前创建以访问管理仪表板等受限区域,并在专家文件中保留授权模型规则。这样,您就可以使用 Pundit,而不会遇到任何问题和问题。
关于ruby-on-rails - 将 Pundit 与命名空间一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255020/