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

ruby-on-rails - 引擎中的康康康

我想在引擎中使用 rails gem cancancan ( https://github.com/CanCanCommunity/cancancan )。所以我将它添加到我的 gemspec 文件中,如下所示:

在引擎虚拟应用程序和测试应用程序中,我加载了我的引擎,并且总是收到有关每个 cancancan 方法的未定义方法的错误。

这是我ability.rb在主应用程序中的文件:

我尝试了几种在引擎中使用 cancancan 的解决方案,但没有找到适合我的引擎的解决方案。这里有些例子:

我的错在哪里?发布的链接之一真的是解决方案还是错误/过时?有没有在引擎中使用 cancancan 的好教程?谢谢!

0 投票
1 回答
315 浏览

ruby-on-rails-4 - Ror: cancancan 隐藏特定用户类型的索引页面

我在 Ruby on rails 上遇到了关于cancancan gem 和继承表的问题。我的帐户模型有多个继承模型Teacher < AccountDirector < Account它们具有不同的能力。

这是我的规则:“inability.rb”

我的路线文件如下所示:

当我以教师身份登录并转到 /directors(索引页面)时,Cancan 应该引发 Unauthorized::AccessDenied 消息,而不是显示导演页面。

我可能错过了文档中的某些内容。有人可以启发我吗?

谢谢

0 投票
1 回答
212 浏览

ruby-on-rails - Rails + CanCan:如果已经是成员,则禁止用户加入组

我有一个 Rails 应用程序,使用 CanCan 进行授权。我有可以在组中拥有成员资格的用户。我想创建一个 CanCan 规则,该规则仅在用户还不是该组的成员时才授权用户创建组成员资格。到目前为止,我一直无法弄清楚魔术:

感谢您的协助。另外,我知道 CanCanCan 是 CanCan 的继承者。CanCanCan 的回答会很好。

0 投票
1 回答
1537 浏览

ruby-on-rails - 用 CanCan(can) 设计

我似乎找不到一个很好的教程,而且我遇到了一些困难。

我正在使用带有基本 CRUD 应用程序的 rails 4.2.0。对于身份验证,我使用的是设计,对于角色,我使用的是 Cancancan,因为这些文档具有相当易于理解的文档。

我有两种类型的用户:

用户和管理员。

管理员可以与所有模型进行交互。添加-编辑-删除等

用户只能与某些模型进行交互。这将是一个预订系统。

我不太确定设置它需要经历的过程。我是否需要为每个用户类型生成完整的 rails 或者我可以只使用 Devise 生成?除此之外,我如何选择用户类型?到目前为止,我有两个有效的登录链接。

我遇到的主要问题是在 cancancan 中定义角色。

任何有关该主题的帮助/问题将不胜感激。

0 投票
1 回答
877 浏览

ruby-on-rails - RSpec 和 Cancancan:所有阴性测试均失败

谁能帮我理解为什么只有我的阴性(即should_not)测试会失败?我所有的should测试都通过了,所以这让我觉得我有一些配置错误,尽管我不知道。

能力.rb

user_spec.rb

每个阴性测试都有这个结果:

谢谢你的帮助。

0 投票
1 回答
1498 浏览

ruby-on-rails - 如何限制用户使用 CanCanCan 更新某些字段?

因此,如果我有一个用户,并且他可以创建/更新他的服务,但他不能 :publish(bool) 他们,那么从 update_params 哈希中跳过该字段的最佳解决方案是什么?

我发现了这个类似的问题,但它链接到从未发布的 CanCan 2.0,我想知道是否有办法使用 CanCanCan 解决这个问题,但在他们的文档中找不到任何内容。非常感谢!

0 投票
1 回答
432 浏览

ruby-on-rails - 使用 Vanity URL 和 CanCanCan gem(load_and_authorize_resource 错误)

我正在尝试在我的 Rails 应用程序中使用 Vanity URL,以便显示用户名而不是 ID。我创建了 slug,以便在 url 中使用用户名而不是 id(这里一切正常),当我尝试加载在控制器中启用了 load_and_authorize_resource 的页面时,就会出现我面临的问题。我相信这是试图通过 id 而不是导致错误“找不到 id=X 的用户”的 slug 来查找用户。有没有什么地方我可以覆盖 load_and_authorize_resource 以便它使用 slug 而不是 ID?

0 投票
1 回答
346 浏览

ruby-on-rails - 使用 CanCan 块进行分页

使用 will_paginate 或 Kaminari,您可以使用范围和 CanCanCan 进行分页。这里解释一下,如何用cancan进行分页?

但这仅说明了在您的 CanCan 能力使用哈希时如何执行此操作。如果您使用块,那将不起作用。我理解这是因为哈希转换为 SQL 语句。我似乎想不出用块语句来做这件事的方法。

例如:

如果客户在他们的客户列表中,用户只能查看货件。

一种方法可以做到这一点并返回一组记录。但是 will_paginate 需要分页对象。

will_paginate 会吐出来的。也许这会在 Kaminari 工作?

谢谢!

0 投票
1 回答
112 浏览

ruby-on-rails - CanCan:检查记录中的权限,包括依赖关系

示例模型

  • 用户在 0..* 个拼车中
  • 每辆车在 1 个拼车中
  • 每辆皮卡有1辆车

权限设置

用例

目标是让用户为他的一辆车创建一个新的 CarPickup。该视图可能类似于以下内容:

问题

保存用户时,应验证当前用户是否可以访问通过上述表单传递的汽车。有没有一种优雅的方式来做一些事情:

解决方案尝试/进一步的问题

  • 适应能力如下:

    如果在未选择产品的情况下保存表单,则会中断。对于这个解决方案,需要有一种方法来指定if not nil

  • 第二次授权调用:

    /li>
  • 可以can?(:read, @car_pickup)理解为accessible_by对单条记录吗?

  • 这可能使用 load_resource 来实现吗?

0 投票
0 回答
165 浏览

ruby-on-rails - cancancan 没有设置参数[:id] 的授权

我正在尝试授权“位置”。在 url 中,参数不是 Location id,而是另一个名为“url_alias”的字段。所以在 LocationsController 中搜索正确的位置时,我不使用 params[:id]。

路线如下所示:

在ability.rb 模型中,我使用以下行;

现在的问题是 CanCanCan 不使用我尝试通过 url_alias 字段授权的信息,我可以查看我想要的每个位置。当我用“qwert”之类的随机值替换“url_alias”时,我什至没有收到该字段不存在的错误。

通过将控制器中的 params[:id] 设置为随机值,一切都会再次按预期工作,cancancan 由 url_alias 等授权。我认为通过将 params[:id] 设置为来解决这个问题并不是一个真正干净的解决方案一个随机值以使 CanCanCan 正常工作。那么有人有更好的解决方案的想法吗?提前致谢!