ruby-on-rails - 将 Pundit 与命名空间一起使用

标签 ruby-on-rails pundit

在我的项目中,我有非常常见的命名空间“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/

相关文章:

ruby-on-rails - 为什么 ruby​​ 中的内存分析如此困难?

ruby-on-rails - form_for 操作在编辑操作期间将 .id 附加到 URL - Rails 3

ruby-on-rails - rails : create through-record via association

ruby-on-rails-4 - 具有命名空间的专家策略

ruby-on-rails - Rails - 在没有 url helper 的情况下在模型的虚拟属性中构建绝对 url

javascript - 如何使用表单在 View 中更新模型列表而不使用 rails 中的 javascript (coffeescript) 刷新?

ruby-on-rails-3.2 - 在 Pundit 策略中访问 session 参数

ruby-on-rails - 使用 File gem 上传的文件的 Pundit 授权

ruby-on-rails - 了解如何使用 Pundit