问题标签 [pundit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
446 浏览

ruby-on-rails - Rails/Pundit ArgumentError

在一个练习中,我试图创建授权,以便用户需要成为帖子的所有者或一般管理员,除了在场并登录以更新帖子。我正在尝试实施权威政策(使用设计进行身份验证)。

PostController 类

ApplicationPolicy 类

*用户模型*

我被参数错误卡住了:wrong number of arguments (2 for 1). 我的理解是策略方法是Pundit模块的一部分,它初始化并返回具有给定记录并current_user作为隐式用户的新策略对象。有人可以帮我阐明这个问题吗?

错误信息

显示 /home/vagrant/code/bloccit/app/views/posts/show.html.erb 其中第 3 行提出

参数数量错误(2 比 1)

完整的错误跟踪

0 投票
1 回答
543 浏览

mysql - Pundit 通过连接表确定模型所有权范围 - Rails 4

我通过一个连接表将用户与给定的公司相关联,因为我需要能够让每个公司都有一堆用户,反之亦然。

我的问题是,当用户点击公司的索引页面时,我如何将其范围限定为仅显示与这些用户相关联的内容?

我是否需要在公司级别创建一个接受@user 的范围?或者我可以直接内联吗?我可以一起破解一些东西,但还没有把我的头绕到专家面前,所以任何方向都将不胜感激!

像这样:

0 投票
1 回答
346 浏览

ruby-on-rails-4 - Rolify has_role?在 remove_role 之后返回 true

我想做以下事情

为用户添加角色

删除特定用户的角色

我有一个问题,因为目前

即使在删除后也返回 TRUE。但是,当我执行 User1.roles 时,它会按预期返回一个空数组和 has_any_roles?按预期返回 false。为什么即使在角色被删除后它仍然返回 TRUE?

0 投票
1 回答
297 浏览

ruby-on-rails - Rails 4 Devise,Pundit,Join Table ActionView::Template::Error(#<# 的未定义方法`task_definition_path':0x6919b2b2>):

这是我的用例:

  1. 我有一个使用 Devise for AuthN 的用户模型,我正在使用 Pundit 进行 AuthZ。
  2. 我通过子域约束限制对主应用程序的访问。
  3. 我有一些面向最终用户的页面(在某些时候将是不同的 LandF),我有管理页面等。常见的故事你知道演习。
  4. 我正在使用一个 has_and_belongs_to_many,它使用一个带有 :id 的连接表
  5. 我将控制器、视图目录和迁移命名为复数形式,将模型命名为单数形式。示例:TaskDefinition => 模型、TaskDefinitions => 控制器和表。
  6. 生成默认路由,我提供了内容。
  7. 我在视图目录中使用部分,这是一个非常新的问题,因为从 Ruby 到 JRuby 的端口。

堆栈跟踪:

迁移:

楷模:

控制器:

路线:

看法:

耙路线:

0 投票
2 回答
1127 浏览

ruby-on-rails - 无法通过 Pundit gem 完成新控制器操作

我有一个 Ruby on Rails 网络应用程序,用户可以在其中创建笔记。笔记属于创建它的用户。

我安装了Pundit gem来创建授权,特别是管理员角色。

我希望用户能够:

  • 创建、更新或删除他们的笔记

并且管理员能够对任何用户的笔记做同样的事情。

当我以管理员身份登录时,我可以创建一个新笔记。当我以会员身份登录时,我无法创建新笔记。我立即被重定向到根页面,甚至从未被带到新的笔记页面。

这是我收到的 Flash 错误消息:

在安装 Pundit 之前,成员可以创建新注释。所以我认为这与我的政策有关。

以下是我application_policy.rb文件中的相关方法:

这是我的note_policy.rb文件:

以下是我notes_controller.rb文件中的相关操作:

我试图弄清楚为什么管理员可以创建新笔记,但成员不能。

谢谢你。

0 投票
2 回答
1717 浏览

ruby-on-rails-4 - 嵌套 Pundit 政策?

假设我有一个属于 User 模型的 Document 模型。A User has_many 文档。DocumentPolicy 可能包括这个...

但是,如果...要编辑文档,您还必须能够编辑该文档的父级(用户)。然后,该策略可能看起来像这样。

这会导致错误:

我很好奇是否有更好的方法来做到这一点。我是否错误地接近它?这似乎是其他人会想到做的事情......所以,我希望能深入了解其他人是如何解决这个问题的。

0 投票
1 回答
552 浏览

devise - Devise-Pundit:为Superadmin创建一个页面来创建用户,但实际上并不是创建用户

如何让超级管理员真正创建用户?我需要策略 CreateusersPolicy 吗?我的代码当前将我带到可以创建用户的页面/表单,但它实际上并没有创建用户。

如果我需要包含更多信息,请告诉我!

配置/路由.rb

控制器/application_controller.rb

我也不知道在创建部分放什么。

控制器/users_controller.rb

意见/用户/create.html.erb

应用程序/polices/user_policy.rb

0 投票
2 回答
4436 浏览

ruby-on-rails - Rails_admin:我应该有 admin_user 还是具有管理员角色的用户来管理用户和管理面板

在我的 Rails 应用程序网站中,访问者可以注册并创建内容。它使用带有用户模型的设计,一切正常。

现在我想使用 rails_admin 来管理网站资源和用户等,并且只有具有管理权限的人才能访问它。

我应该为管理面板访问创建一个单独的 AdminUser 模型还是使用具有管理员角色的用户模型,并使用一些授权库来管理访问。

如果我只使用一个模型,那么如果用户是管理员,我希望用户在登录后被重定向到管理面板,如果不是,那么我希望用户被重定向到他们的个人资料。哪个授权库 cancan 或 pundit 更适合我的情况。

谢谢!

0 投票
2 回答
3604 浏览

ruby-on-rails - Pundit 的未定义方法“授权”

我已经在我的 Rails 应用程序中安装了 gem Pundit,并仔细按照自述文件中的说明进行操作。

但是,当我在我的任何控制器中使用授权时,我会收到错误消息“未定义的方法 'authorize' for .

此外,当我尝试在视图中使用“策略”时,我收到错误“未定义的方法'策略'”。

就好像根本没有安装 Pundit!

我已将 Pundit 包含在我的应用程序控制器中。

我有一个包含所有策略的 ApplicationPolicy 文件,然后是从应用程序策略继承的每种记录类型的策略文件。

出于某种原因,我无法将任何代码粘贴到这个问题中,所以我希望我已经包含了足够的信息!

我会很感激任何想法。

0 投票
1 回答
1813 浏览

ruby-on-rails-4 - 权威人士的政策范围有很多通过关系

第一次在这里发帖,所以我希望它是有道理的,但是我在这方面已经旋转了太久了。首先是一点背景。我正在构建一个具有 3 个模型的 Wiki 应用程序:用户、Wiki 和协作(连接表)。

我正在使用 Devise 和 Pundit,并且有 4 类用户应该根据他们的状态查看不同的 wiki 子集。

这是规则:

  • 公共用户(未登录)- 只应查看(无编辑)公共 wikis (:hide => false)
  • Authenticated User(:role => "standard") - 只能查看、编辑和删除公共 wiki。
  • 高级用户 (:role => "premium") - 查看、编辑、删除公共 wiki 以及创建私人 wiki 的能力 (:hide => true) 并将协作者添加到他们的私人 wiki 中,从而赋予他们对该 wiki 的编辑权限。
  • 管理员 (:role => "admin") 完全控制所有记录。

因此,我的 Wiki 索引视图在 Policy 范围(检查用户状态)中有一个冗长的 scope.joins 条件,以便根据他们的角色为 current_user 提供一个 wiki 列表的子集。

它不断吐出这个错误:

这是政策

我的模型

维基控制器

我希望你不会被代码淹没,但我想提供尽可能多的信息。

谢谢你的帮助!

哦,这很可能是有问题的代码,但我将其他所有内容都包含在上下文中。