2016-03-30 10 views
0

Ich bin neugierig, warum session nach rake db:drop am Leben gelassen?Rails-Session noch am Leben nach db: Drop

Ich habe

def current_order 
    if !session[:order_id].nil? 
    @current_order = Order.find(session[:order_id]) 
    else 
     Order.new 
    end 
    end 
    helper_method :current_order 

und nach rake db: legen Sie es mich Ausnahme

Couldn't find Order with 'id' = my session number 
>> session[:order_id] 
=> 11 

die Sitzung noch dort bedeutet, gibt. Aber warum?

+1

Sind Sie Sitzungen in der Datenbank zu speichern? Standardmäßig denke ich, dass sie mit Cookies – tpbowden

+0

Correct @ tpbowden gespeichert werden. CookieStore ist der Standard seit Rails 2. http://guides.rubyonrails.org/security.html#session-storage – max

+0

@tpbowden Nein ich speichere keine Sitzung in db, als wie ich Sitzung mit Rake db: reset löschen kann? – user

Antwort

1

Rails standardmäßig verwendet ActionDispatch::Session::CookieStore die Sitzung zu speichern. Daher entfernt das Bereinigen der Datenbank keine Sitzungsdaten, da sie vom Client gehalten werden.

Stattdessen würden Sie die Cookies im Browser (in Entwicklung) entfernen oder die geheime Schlüssel Basis ändern vorhandene Cookies ungültig zu machen.

Siehe:

+0

Wie kann ich es auf Server-Seite tun? außer Änderungen in 'config/secrets.yml' – user

+0

Es gibt keinen anderen Weg, AFAIK, außer durch den Sitzungsspeicher auf etwas anderes als' ActionDispatch :: Session :: CookieStore' ändern. Für die Produktion würden Sie 'ENV [" SECRET_KEY_BASE "]' anstelle der YAML-Datei ändern. – max

Verwandte Themen