2016-03-30 93 views
0

我很好奇爲什麼sessionrake db:drop後還活着?db:drop後rails仍然活着

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

和耙分貝後:放棄它給了我異常

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

這意味着會話仍然存在。但爲什麼?

+1

你在數據庫中存儲會話?默認情況下,我認爲他們使用cookies存儲 – tpbowden

+0

正確@tpbowden。 CookieStore一直是Rails 2以來的默認版本。http://guides.rubyonrails.org/security.html#session-storage – max

+0

@tpbowden no我不會在db中保存會話,而不是如何使用rake db刪除會話:reset? – user

回答

1

Rails默認使用ActionDispatch::Session::CookieStore來存儲會話。因此,清理數據庫不會刪除客戶端持有的任何會話數據。

取而代之,您將刪除瀏覽器中的cookies(正在開發中)或更改密鑰庫以使現有Cookie無效。

請參見:

+0

如何在服務器端做到這一點?除了'config/secrets.yml'中的更改 – user

+0

除了通過將會話存儲機制更改爲「ActionDispatch :: Session :: CookieStore」之外的其他方法,AFAIK沒有其他方式。爲了生產,你可以改變'ENV [「SECRET_KEY_BASE」]而不是YAML文件。 – max

相關問題