我有一个使用Devise和CanCan的应用。 在config>初始化程序> Abiliity.rb中 阶级能力 包括CanCan :: Ability
def initialize(user)
if user.is? :superadmin
can :manage, :all
elsif user.is? :user
can :read, Project do |project|
project && project.users.include?(user)
end
end
end
end
我的Project控制器的索引操作有问题,项目控制器是普通的RESTful控制器。基本上,普通用户在登录时可以看到项目#index。但并非所有项目都将此用户视为“普通用户”,为什么cancan无法阻止他访问?
由于
答案 0 :(得分:2)
确保您在load_and_authorize_resource
中呼叫ProjectsController
,方法如下:
class ProjectsController < ApplicationController
load_and_authorize_resource
#...
end
如果仍然无效,请尝试在索引操作中调用authorize!
方法,看看是否有所不同,例如:
class ProjectsController < ApplicationController
#...
def index
@projects = Project.all
authorize! :read, @projects
end
#...
end