12得票5回答
使用cancan来防止对控制器的访问

我有一个管理员控制器,我希望只有被定义为管理员的用户才能访问该控制器。 我的权限类:class Ability include CanCan::Ability def initialize(user) if user.admin? can :manage, :a...

12得票2回答
CanCanCan在异常情况下会抛出一个普通的Rails错误,而不是像我指定的那样显示一个flash消息。

我正在使用 CanCanCan、Devise 和 Rolify。 我的 ApplicationController 看起来像这样:class ApplicationController < ActionController::Base # Prevent CSRF attacks ...

11得票3回答
Rails CanCan宝石重构Ability类

我在我的Rails应用中有大约13个模型,我在所有模型上使用了Ability。我的Ability类已经变得非常庞大了。不同的CRUD操作有不同的权限条件,这使得它很难进行管理。 有人可以指导我如何重构它吗?比如使用模块或类来使我的Ability类看起来更整洁。

11得票1回答
为什么这个 RSpec 请求规范没有更新模型?

我有一个与用户模型交互的请求规范。我想确保拥有管理员角色的用户可以创建/编辑/删除用户。我现在遇到的问题是,编辑操作无法更新用户。当我手动执行网站上的操作时,一切正常,但测试未能更新用户。 以下是我的规范: it 'edits a user' do @user = FactoryGir...

11得票1回答
是否可能使用 CanCan 进行 :manage, :all 权限控制,但排除某个或多个方法?

我正在做:can :manage, :all if user.role == 'admin' can :approve, Anuncio do |anuncio| anuncio.try(:aprovado) == false end 我的第二种方法不起作用,因为:manage :all...

11得票3回答
使用active_model_serializers序列化权限(例如CanCan)

如何使用active_model_serializers序列化权限?我在模型和序列化器中没有访问current_user或can?方法的权限。

10得票1回答
如何使用 RSpec 在 CanCan 授权失败时测试响应代码?

我正在开发一个Rails项目,其中使用CanCan来授权我的资源。当用户未登录并尝试提交“talk”(通过ajax表单提交)时,CanCan会正确地抛出401作为响应,并显示{"status":"error","message":"You must be logged in to do tha...

10得票1回答
CanCan中 :read 和 [:index, :show] 有什么区别?

根据所有文档,:read 操作被别名为 :index 和 :show:alias_action :index, show, :to => :read 然而,请考虑以下具有嵌套资源的情况:resources :posts resources :comments end 如果我像这样定义...

10得票1回答
Rails CanCan为多个Devise模型提供的Ability类

我想知道如何定义一个能力类,并根据已登录的用户提供该能力类。 我正在使用Active Admin、Can Can和Devise,我已成功创建了User和AdminUser模型。 以下是我在ability.rb中的代码:class Ability include CanCan::Abil...

10得票2回答
获取表示用户CanCan权限的字符串

我想缓存一个“帖子”视图,但该视图取决于当前用户的权限(例如,只有在current_user.can?(:edit, @post)时才会显示“编辑”链接)。 因此,我想让我的缓存键包括当前用户CanCan权限的表示方式,以便在用户能力更改时可以使缓存无效。 那么,如何获取表示当前用户能力的...