2011-01-13 11 views
2

Ich bin offensichtlich neu zu Rails, so folgte ich einige Beispiele, wie man Bereinigungssitzung beim Abmelden, aber die Sitzung nicht bereinigt wird. Siehe Code hier, erste Logger Anweisung gibt „20“ und die zweite Logger Aussage auch druckt „20“Rails v3 Sitzung zerstören funktioniert nicht?

Gibt es etwas, was ich tun muss, können einige Konfiguration sein ?? Ich habe versucht, session.delete (: user_id) als auch & es nur nicht funktionieren.

def destroy 
    logger.error "Session user #{session[:user_id]}" #prints 20 

    session[:user_id] = nil 
    session.delete(:user_id) 
    session.destroy 

    logger.error "Session user #{session[:user_id]}" #prints 20 again?? 

    redirect_to :root 
end 

Meine Umgebung -

  • Rails v3.0.3 Local Dev env (OSX)
  • Alles ist Standard seit seiner Umgebung einer dev
  • Standard-Session zu speichern, habe ich nicht gespielt mit dem noch

Antwort

3

Anstelle von session.destroy verwenden Sie

reset_session

Diese alle Sitzungen in der Anwendung zurückgesetzt.

Danke ....

+1

danke, das hat funktioniert. Nur neugierig, warum funktioniert session.destroy nicht und was ist die empfohlene Methode, um ein Session-Objekt zu löschen? – kapso

+0

hängen an, Sie haben gesagt - „alle Sitzungen in der Anwendung vorhanden Reset“ bedeutet, dass sie die Session-Objekt aller Benutzer zurückgesetzt in der App angemeldet ?? das ist nicht das, was ich will, ich will nur die Sitzung eines bestimmten zerstören, der Abmelden klickt. – kapso

+0

reset_session setzt alle Sitzungen für eine bestimmte Abmeldung zurück ... – Anubhaw