设计+ cancan不能阻止访问索引问题,其中@proj = Proj.all

时间:2010-08-27 00:32:18

标签: ruby-on-rails devise cancan

我有一个使用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无法阻止他访问?

由于

1 个答案:

答案 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