问题标签 [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 回答
843 浏览

ruby-on-rails-4 - CanCanCan 在异常上抛出常规 Rails 错误,而不是像我指定的那样闪烁消息

我正在使用 CanCanCan、Devise & Rolify。

我的ApplicationController样子是这样的:

我的routes.rb样子是这样的:

这是我ability.rb的相关:

因此,当我以 身份登录:member并尝试转到 时/newsroom,我收到此错误:

而不是像我所期望root_url的那样被重定向到。:alert

不知道这里发生了什么。

编辑 1

对于它的价值,我只有在将它添加到我的时才会得到这个NewsroomController

0 投票
3 回答
4743 浏览

ruby-on-rails - 如何使用康康康?

我想在我的 rails 应用程序中授予用户权限。我有可以创建、更新和删除所有帖子和评论的“管理员”,只能创建和更新自己的评论的“用户”,以及不能执行任何这些操作的“访客”。为此,我使用宝石“设计”和“康康康”。我了解“设计”宝石,但不了解“康康康”。

在类 ability.rb 中,如何为这些用户(admin、user、guest)编写权限?

0 投票
0 回答
696 浏览

ruby-on-rails-4 - cancancan gem 将参数传递给能力

我在我的应用程序中使用 cancancan 和 activeadmin gem,在 cancan gem 中我想将参数传递给能力。

控制器.rb

能力.rb

上面的代码不起作用。如何实现这一目标。

0 投票
1 回答
875 浏览

ruby-on-rails - load_and_authorize_resource null cancancan

我正在尝试使用 cancancan 加载资源,但它一直返回 null,我不知道为什么。有人可以指出我的错误吗?我尝试在 Rails 控制台中进行一些调试,以确保关联条件在某些情况下返回 true,并且在我的测试用例中,所有字符 (2) 都属于用户。

这是代码

api/v1/characters_controller.rb

模型/能力.rb

回复

0 投票
0 回答
481 浏览

ruby-on-rails - Cancancan嵌套资源路由

我有一个名为 的控制器FileRecord,它可以从两个不同的路径访问

来自具有角色管理员的用户

来自普通用户

有没有办法阻止管理员访问普通用户的路由,反之亦然?

谢谢

0 投票
4 回答
9321 浏览

ruby-on-rails - 如何正确设置我的 CanCanCan 权限?

我对如何正确配置 CanCanCan 有点困惑。

对于初学者,我是否必须添加load_and_authorize_resource到我想限制访问的每个控制器资源?

这就是我想做的:

  • 管理员可以管理和访问所有控制器和操作
  • 编辑可以阅读所有,管理:新闻室,并可以管理所有帖子
  • 会员可以阅读每个帖子,可以创建和更新帖子(不能编辑/删除/其他任何内容),不能访问新闻编辑室。我们的业务规则中更新和编辑帖子之间的区别在于,更新是创建一个新帖子,它是当前帖子的子帖子。所以不是编辑。只是与祖先关联的新记录。
  • 访客可以阅读每个帖子,但不能创建帖子或访问新闻编辑室。

这就是我的ability.rb样子:

在我的routes.rb我有这个:

但发生的情况是,当我使用尚未分配任何角色的用户(即我想成为“访客”)登录时,他们可以访问新闻编辑室。

当我尝试编辑角色为 的帖子时:member,它给了我一个“未授权编辑帖子”错误(这是正确的)。

我只是不能完全锁定Newsroom,我不知道为什么。

0 投票
1 回答
352 浏览

ruby-on-rails - 使用 CanCanCan 定义复杂的能力

在我的数据模型中:

Company has_many offices

Employee has_many offices, through: :employee_office(这就是我允许公司管理员允许员工进入某些办公室而不是其他办公室的方式)

Office has_many appointmentsAppointment belongs_to office

我想定义一种能力,使用CanCanCan它允许一个只有在该处的作品被制作的情况下才可以Employee对一个执行操作。AppointmentEmployeeOfficeAppointment

像这样的伪代码:

Employee can :manage Appointment, Employee.offices.include?(Appointment.office)

这是我到目前为止所拥有的:

谢谢!

0 投票
1 回答
411 浏览

ruby-on-rails - 无法访问 ActiveRecord 中的属性

我想将CanCanCan 带入我的 Rails 应用程序,但我无法读取我的用户类的角色属性。我只需要一个“每个用户一个角色”的解决方案,所以我在我的用户模型中添加了一个“角色”列并成功迁移它,但是当我尝试读取属性时,它为零......

我在我的用户类中创建了以下内容:

当我在 Rails 控制台上尝试以下操作时:

我的用户角色为零,而其他属性可以访问?

0 投票
2 回答
315 浏览

ruby-on-rails - CanCanCan 能力测试未通过,但工作正常

我的 Ability.rb 中定义了以下能力:

在我的能力测试中,我有以下几点:

该功能在进行手动测试时按预期工作,但我无法使此测试工作。我已经使用适当的参数尝试了 Request.create,但我仍然得到相同的结果。

我做了一些调试,相应的关联是有序的(主管有下属,请求属于下属,所以实际测试一个主管只能action1,action2他的下属的请求)。

我正在使用 CanCanCan 和 RSpec 进行测试。

关于如何进行此测试的任何见解?

0 投票
1 回答
644 浏览

ruby-on-rails - cancan 能力:允许具有角色 create_user 的站点管理员创建或注册新的设计用户

对于应用程序,我正在尝试使用 cancan/cancancan、devise 和 rolify 实现 job_code 样式访问。

只有具有 job_code :create_user 的站点管理员才能创建新用户

以下是代码:

在 routes.rb 中,我有

应用控制器

当我使用时,abilities.rb 中的以下代码

完美地工作。它带我到用户注册页面

但是,当我有这个代码时

它说拒绝访问(403 页)

我很难弄清楚,我应该使用什么来代替User incan :create, User