2010-11-12 7 views
0

Je souhaite que les visiteurs de mon site aient une session par défaut "Utilisateur invité" s'ils ne sont pas connectés. J'ai créé l'utilisateur invité dans la table de mes utilisateurs, mais comment initier une session pour cet utilisateur si l'utilisateur est non signé enComment créer un utilisateur invité par défaut avec Devise?

je pourrais avoir. SET_USER avant filtre ApplicationController:

class ApplicationController < ActionController::Base 

    before_filter :set_user 

    private 

    def set_user 
     current_user || # Initiate a session with Guest here. But how? 
    end 

end 

Répondre

2

Cela fait l'affaire:

sign_in(user) 

Je ne peux pas croire combien de temps il a fallu pour comprendre cela!

0

Pour initialiser current_user il suffit de créer une nouvelle instance de l'utilisateur. Vous pouvez également y enregistrer un identifiant unique, que vous pouvez également enregistrer dans un cookie pour reconnaître l'utilisateur lors de son retour.

Par exemple:

current_user ||= User.find_or_create_by_session_id(some_session_id_from_cookie) 
+0

Il existe un assistant Devise appelé current_user. Je dois appeler cette aide de mon point de vue. Je ne sais pas ce que cette aide utilise pour obtenir la valeur de l'utilisateur, mais l'instanciation d'un objet Utilisateur seul ne le fera pas. – AKWF

+0

Hm ... J'ai en quelque sorte supposé cela, mais en y réfléchissant, je ne peux pas vraiment dire d'où cela vient. Je ferai la réflexion la prochaine fois. – rausch

Questions connexes