问题标签 [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 投票
1 回答
56 浏览

ruby-on-rails - Rails 4 - CanCanCan - 表达式

我正在尝试使用 CanCanCan 在我的ability.rb 中定义能力。

我不确定这是否是一个有效的表达方式——我在 wiki 中找不到处理这个问题的例子。

我有一个名为 Vision 的模型。Vision 有一个名为 :public 的布尔属性和另一个名为 :public_vision 的属性

如果 :public 是真的,那么我想创造一种阅读 :public 愿景的能力

我试过这个:

这是有效的语法吗?我还不能测试我的能力文件,因为有太多我无法注释掉的红宝石。

0 投票
1 回答
115 浏览

ruby-on-rails - Rails 4 & CanCanCan - 语法

我正在尝试使用 CanCanCan 在我的 Rails 4 应用程序中定义能力。

我的能力.rb 文件中有这个能力:

当我尝试在 Time.now 之后删除逗号时,出现此错误:

我不知道如何解读这些错误消息的含义以及它要我做什么。对于第一种格式,我不明白为什么用 => 替换逗号是正确的,因为需要针对该错误评估两个单独的属性。

对于第二个错误,我不明白为什么我会在那一点上“结束”,因为我有一长串需要进入课堂的其他能力。

我想知道这个错误是否与尝试使用 Time.now 参考有关。这不是能力文件中的有效功能吗?如果是这样,是否有其他方法可以查看属性中的日期是否晚于测试能力的日期?

当我尝试将其设置为块时,如下所示:

我收到此错误:

然后我又被卡住了,因为我不知道把 =>

当我尝试删除外部花括号时,该块显示为:

我收到此错误:

所以,只是尝试随机的事情,我试图改变括号:

(所以方括号而不是外层的花括号) - 我不再在那条线上停下来。我真的不明白为什么会这样(并且尚未在种子数据上对其进行测试),但它已经阻止了错误的抛出。

谢谢

0 投票
1 回答
3061 浏览

ruby-on-rails - 使用 rspec 测试 cancancan 能力

我正在尝试使用 rspec 测试我的康康康舞能力

但与测试特定用户可以做什么相反,我正在尝试测试用户不应该做什么。

现在,我有一个这样的上下文块:

这清楚地表明,类型的用户manager不应该有任何形式的访问权限Question模型的任何形式的访问权限。

有没有一种直接的方法可以将整个块写在一个it块中,只有一个expect

我曾想过将其写成如下:

但我认为这可能不一定符合我的意图,因为该测试将通过与未授予该资源的能力之一一样多。

那么,简而言之,有没有直接的方法来测试这种场景呢?谢谢大家。

0 投票
1 回答
213 浏览

ruby-on-rails - Rails 4 - cancancan - 定义能力

是否可以通过引用另一个能力来定义 CanCanCan 能力?

例如,我有名为 Project 和 Project Question 的模型。

我想让一类用户阅读项目,然后如果他们可以阅读项目,那么他们就可以创建项目问题。

我已将用户阅读项目的能力定义为:

现在我想定义创建项目问题的能力。我想知道你是否可以这样说:

我也试过:

是否可以通过参考另一种能力来定义一种能力?

PS:这不是我关于 cancancan 的另一个问题的重复,它通过引用数据库中的属性来寻求语法帮助来表达能力。

0 投票
0 回答
128 浏览

ruby-on-rails-4 - Cancancan 嵌套资源授权失败并出现 mongoid

我在这里简单解释一下。问题是如何使用 mongoid 授权嵌套资源?假设我有一个Project模型和一个Project::Task模型。Project有很多Project::Task。我想Project::Task在控制器级别授权,不想显示另一个Project人的任务。所以基本上我会在下面处理它:

load_and_authorize_resource :project, class: Project load_and_authorize_resource :task, through: :project_id, class: Project::Task

但这不起作用。它总是抛出 403。这样做的正确方法是什么?

0 投票
2 回答
1434 浏览

ruby-on-rails - CanCanCan Rails 不工作

我正在使用带有 Devise 和 CanCanCan 的 Rails 4,并且由于某种原因,当我尝试只为他们制作的产品授予用户 CRUD 权限时,CanCanCan 权限设置都没有通过,用户只能做read only。但是,版主和管理员权限按预期工作。

能力.rb

用户.rb

.html 文件

控制器

编辑:

用户 SQL 表

产品SQL表

这是我的文件结构

文件结构

0 投票
1 回答
290 浏览

ruby-on-rails - ActiveAdmin 中针对 batch_action 的 CanCan 功能

假设我想让一些用户阅读、创建和删除(使用 batch_action)他们的帖子,但我不想让他们更新帖子。像这样的东西:

但是当我运行批处理操作时,我看到 cancan 添加了一些尴尬的情况,例如

当我使用 :manage 而不是单独的 crud 操作(:read, :update, :create, :destroy) 时效果很好。

有任何想法吗 ?

0 投票
2 回答
333 浏览

ruby-on-rails - Rails - ActiveAdmin & CanCan custom override method for initialize_cancan_ability

I am attempting to pass thru request data to the Ability model as suggested here:

and here:

See: https://github.com/ryanb/cancan/wiki/Accessing-request-data

However, I am using ActiveAdmin with the CancanAdapter, and it uses a separate initialize call via:

See: https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/cancan_adapter.rb

So how/where can I redefine initialize_cancan_ability so that I can pass in request data similar to the current_ability example?

Basically I'm hoping to just replace the last line as such:

klass.new user, request

Thanks.

0 投票
1 回答
636 浏览

ruby-on-rails - 如何设置cancan gem的权限?

请帮助解决问题。我尝试在安装“cancan”和“cancancan”gem 后设置权限。

架构.rb:

楷模:

应用程序/模型/ability.rb:

我填写了我的角色表以下值:

我填写了我的联接表“roles_users”以下值:

但运行应用程序权限后没有效果。问题是管理员可以更改所有用户的信息。这是不对的。请帮助修复它

ps:

经理通过管理面板更改用户信息后,控制台输出如下:

0 投票
1 回答
228 浏览

ruby-on-rails - 如果用户有很多公司,如何为用户添加角色?

在我的应用程序中,用户可能有很多公司,并且可以在公司中对 crud 操作具有不同的权限,现在我使用 cancancan gem,授权如下所示:

用户.rb

角色.rb

用户角色.rb

能力.rb

现在当用户选择另一家公司时,用户可以管理公司模型,但在另一家公司没有权限,如何检测用户的公司ID?