2010-12-03 19 views
0

Je suis le tutoriel de Ryan B, mais j'ai eu quelque chose de mal en essayant d'inspecter le rôle de l'utilisateur.Nul dans CanCan initialiser le paramètre dans le modèle capacity.rb

Pourquoi ai-je un paramètre d'initialisation nul lorsque je l'inspecte? Y at-il un lien entre le paramètre initialize avec l'objet Person, dans le didacticiel de Ryan utilise le paramètre 'user' sur la méthode initialize et le modèle utilisateur. Suis-je en train d'oublier quelque chose de fondamental ici? Ce sont mes codes, merci!

class Ability 
    include CanCan::Ability 

    def initialize(person) 
    raise person.inspect 
    can :read, :all 
    end 
end 

Répondre

0

Très probablement, il n'y a pas d'utilisateur connecté lorsque vous exécutez ce code. Vous devez créer une sorte d'utilisateur invité pour vérifier les autorisations contre les utilisateurs non connectés

def initialize(person) 
    user ||= User.new 
    if user.role? :somerole 
     can :read, :all 
    else 
    #whatever guest can do 
    end 
    end 
+0

Cela, ou vous pouvez également tester pour person.nil? attribuer des droits d'invité. –

+0

Je l'ai testé quand je me suis connecté en tant qu'administrateur, mais je n'ai toujours pas de valeur. Est-ce que je dois d'abord installer AuthLogic pour combiner avec CanCan? Je devine juste, si nous connaissons le statut d'utilisateur de la session afin que nous puissions ajouter le rôle avec CanCan? Mais, si c'est possible, comment puis-je obtenir les données de session dans le modèle? –

+3

Résolu, dans le fichier README est écrit que je dois redéfinir la méthode current_ability si j'utilise un objet utilisateur différent. Merci David Sulc. –