Ruby on rails Rails 5,具有名称空间资源的权威

Ruby on rails Rails 5,具有名称空间资源的权威,ruby-on-rails,ruby,namespaces,pundit,Ruby On Rails,Ruby,Namespaces,Pundit,我正试图弄清楚如何使用pundit和我的命名空间资源 我读过很多其他人的SO帖子,说他们在这方面有问题,但这些帖子早在权威人士关于宝石问题追踪者的讨论之前。问题追踪者不清楚解决方案是什么,所以我被卡住了 我有一个名为Stance的文件夹,它是嵌套资源的名称空间,其中一个名为overview model.rb文件称为: class Stance::Overview < ApplicationRecord class Stance::OverviewsController < Appl

我正试图弄清楚如何使用pundit和我的命名空间资源

我读过很多其他人的SO帖子,说他们在这方面有问题,但这些帖子早在权威人士关于宝石问题追踪者的讨论之前。问题追踪者不清楚解决方案是什么,所以我被卡住了

我有一个名为Stance的文件夹,它是嵌套资源的名称空间,其中一个名为overview

model.rb文件称为:

class Stance::Overview < ApplicationRecord
class Stance::OverviewsController < ApplicationController
create_table "stance_overviews", force: :cascade do |t|
在我的app/policies文件夹中,我尝试了各种方法来制定策略,并尝试在视图中引用策略。我找不到一个有效的方法

我尝试过创建一个名为Stance的文件夹,其中包含一个名为overview_policy.rb的文件,其中包含:

class Stance::OverviewPolicy < ApplicationPolicy
类立场::概览策略
在我的组织视图(其中有一个STANTE::overview)中,我定义了一个局部变量:


然后在视图中,我尝试:

<% if policy(overview).show? %> 

<p><%= overview.explanation %></p>

<% end %>

我找不到一个有效的变体。我所尝试的一切都是基于SO帖子的猜测,大多数帖子都是在权威问题追踪者的对话之前发布的

我没有收到错误消息,但是内容没有在应该呈现的时候呈现


任何人都能看到我需要做什么才能将pundit与命名空间资源一起使用吗?

当我遇到命名空间问题时,我使用pundit.policy()

对于您的类,我认为应该使用
Pundit.policy(当前用户,[:stance,:overview])。在视图中显示?
,并在控制器中使用
authorize[:stance,@overview]

Pundit.policy(当前用户,[:stance,:overview]).show?
将找到show?在app/policies/stance/overview_policy.rb中


如果您在控制器的show中写入
authorize[:stance,@overview]
,它将找到show?在app/policies/stance/overview_policy.rb.

中,当我遇到名称空间问题时,我使用Pundit.policy()

对于您的类,我认为应该使用
Pundit.policy(当前用户,[:stance,:overview])。在视图中显示?
,并在控制器中使用
authorize[:stance,@overview]

Pundit.policy(当前用户,[:stance,:overview]).show?
将找到show?在app/policies/stance/overview_policy.rb中


如果您在控制器的show中写入
authorize[:stance,@overview]
,它将找到show?在app/policies/stance/overview_policy.rb.

中,是否有策略文件stance或stance的stance文件夹?我认为应该是小写的。我们有一个类似的设置与我们的模型之一,它的工作良好。不过,唯一的授权在控制器中。我的策略文件夹中有一个名为“stance”的小写文件夹。您如何在策略中命名您的类?我正在这样做:class Stance::OverviewPolicy<% if policy(overview).show? %> <p><%= overview.explanation %></p> <% end %>