2010-08-27 14 views
1

J'ai une application qui utilise Devise et CanCan. dans la configuration> initializers> Abiliity.rb classe Capacité comprennent CanCan :: Capacitéconcevoir + cancan ne bloque pas l'accès au problème d'index wherer @proj = Proj.all

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 

J'ai problème avec l'action index du contrôleur de projet, le contrôleur de projet est un contrôleur de stock normal RESTful. Fondamentalement, un utilisateur qui est un utilisateur normal, lorsqu'il est connecté, peut voir l'index des projets #. Mais tous les projets n'ont pas cet utilisateur en tant qu'utilisateur normal, pourquoi cancan ne bloque-t-il pas son accès?

Merci

Répondre

2

Assurez-vous que vous appelez load_and_authorize_resource dans votre ProjectsController, le long des lignes de:

class ProjectsController < ApplicationController 
    load_and_authorize_resource 

    #... 
end 

Si cela ne fonctionne toujours pas, essayez d'appeler la méthode authorize! dans l'action index, pour voir si cela fait une différence, par exemple:

class ProjectsController < ApplicationController 
    #... 

    def index 
    @projects = Project.all 
    authorize! :read, @projects 
    end 

    #... 
end