问题标签 [cancancan]

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 投票
0 回答
237 浏览

ruby-on-rails - 规范中的 CanCan / CanCanCan 查询错误

我有一个问题,CanCan(过去和现在的 CanCanCan)向测试中的查询添加了一些奇怪的 SQL 代码。

我的模型:

我有 CanCanCan 能力:

如果我运行代码片段:

在开发/生产中,我有:

在规格中:

其他能力效果很好(属于机器的模型除外)。

也许我必须添加一些其他信息 - 而不是请教。

UPD:将 :index 添加到 #accessible_by 无济于事:

CanCanCan v1.10.1

0 投票
1 回答
105 浏览

ruby-on-rails - 如何使用 cancancan 向某些用户显示页面的某些方面

我是 ruby​​ on rails 的新手,我正在使用 rails 4 和 cancancan,我也使用 Devise gem。我有 4 个不同的用户,管理员、学校、特许经营所有者和普通用户,我有一个能力模型,其中包含:

我有一个我不希望普通用户在 index.html.erb 中看到的链接

但是说用户未定义,我在哪里定义这个以及如何定义?如果我能得到这个工作,我可能能够为其他类型的用户复制不同的东西,我们将不胜感激。

0 投票
1 回答
1274 浏览

ruby-on-rails - 在 Cancancan 中定义组合的复杂能力规则

我有一个我似乎无法定义的复杂规则,用户可以阅读他们自己的信件,或者如果他们有权限,他们可以阅读与任何类型无关的其他人的信件(如果他们是看到的类型控制它)。

我已经尝试过了,认为它会覆盖它,但查看生成的 sql 它会执行“或(非字母匹配规则)”而不是“和(非字母匹配规则)”。

我尝试的另一种方法是使用块/范围,但随后它抱怨“CanCan::Error:无法将 Active Record 范围与其他条件合并。而是使用散列或 SQL 来读取字母能力。”

谁能帮我为这种情况定义一个规则?

0 投票
0 回答
754 浏览

ruby-on-rails - 如何使用 cancan load_and_authorize_resource :product , :through => :current_user 解决记录未找到错误

我有一个控制器

我的ability.rb文件包含

一切看起来都不错,但是当我在 url 中输入另一个用户的产品 ID 时,我得到了

activerecord (4.2.0) lib/active_record/relation/finder_methods.rb:336:in `raise_record_not_found_exception!'

在此处输入图像描述

如何解决从 cancan 引发的此错误

0 投票
2 回答
4048 浏览

ruby-on-rails - 如何修改cancan加载和授权资源以使用不同的id加载资源

如何修改加载并授权资源以使用不同的 id 加载资源。例如。

我的路线是

在我的事件控制器中,我正在访问事件使用:event_id和用户使用:id

现在在我的事件控制器中,如何修改load_and_authorize_resource使用:event_id而不是:id加载事件

0 投票
1 回答
841 浏览

ruby-on-rails-4.1 - authorizing specific controller action using cancancan

I have link to access player's load_player view to access player that belongs to current_user. So how can i restrict access to load_player method for current_user that has no belonging club or club belonging to other user. Note I want restrict access to load_player page.

routes.rb

player_controller.rb

ability.rb

0 投票
0 回答
268 浏览

ruby-on-rails - Rails CanCan(Can) 复杂授权

我有以下型号:

linked_review我认为除了Review 模型中的关联之外,一切都是不言自明的。任何两个评论都可以相互链接,基本上创建了我所说的双重评论。

在我的 CanCan 能力课程中,我从以下规则开始:

这些按预期工作,但我似乎无法弄清楚如何授予用户通过链接评论间接访问的视频的读取权限。

换句话说,如果用户-a 请求访问视频#2(私有,不共享并且由用户-b 拥有)并且视频#2 与视频#1 相关联(用户-a 可以访问,因为它是公开的,与他共享或由他所有)通过链接评论,然后我希望请求用户被授予读取权限。

关于如何做到这一点的任何想法?块不起作用,因为 CanCan 忽略索引操作的块,即当它调用Video.accessible_by(current_ability). 我试图找出视频模型的某种范围,但似乎无法理解我将如何做到这一点。

0 投票
0 回答
65 浏览

ruby-on-rails - 无法授予对属于 belongs_to 关联范围的类的权限

我有CourseClass很多AttendanceSheets 和has_many Teachers 的模型。我希望 course_class 实例的教师能够管理该 course_class 的考勤表。

我希望以下内容可以设置:

用户具有全局角色,但也可以在 CourseClass 上具有每个实例的角色。理论上,上面应该检查他们是否具有全局角色,然后teachers关联会在该 CourseClass 上仅找到具有实例角色的教师。

在控制器中,@attendance_sheets 设置为:

@attendance_sheets = @course_class.attendance_sheets.all

当我运行能力检查时,我得到以下结果:

我期望/想要read/manage继续或继续。AttendanceSheetfalse:read@attendance_sheets@course_class.attendance_sheetstrue

感谢您提前提供任何帮助。

0 投票
1 回答
119 浏览

ruby-on-rails-4 - 使用 rails 4.0 的 cancancan 能力

我在我的 rails 应用程序中使用了 cancancan 身份验证机制。我只希望那些拥有自己帖子和评论的用户不被编辑和删除,而管理员来管理所有事情。我的管理能力工作正常,但其他人没有工作。这是我的能力.rb 文件

结束我应该做什么才能正常工作。它适用于主题但不适用于评论

这是我的主题控制器中的行

0 投票
1 回答
490 浏览

ruby-on-rails - Rails 和 CanCanCan 的授权和组

我有一个用户模型和一个组织模型,它通过会员模型具有多对多关联。用户(没有角色)应该只能创建、读取和更新他们作为成员所属的组织。

我从 CanCanCan 的能力类中放入了以下内容,并 load_and_authorize_resource在组织模型上有一个。

当我加载/组织(索引页面)时,@organizations为零。

当我设置@organizations = Article.accessible_by(current_ability)我得到以下错误:

access_by 调用不能与块“可以”定义一起使用。无法为 :index Organization(id:integer...

文档提到了使用 SQL的建议,但我不太明白如何使用。