Session在Railss中扮演非常重要的角色,例如購物車及帳號登入,這都是非常基本的東西,又因為在Rails上處理Session實在是簡單到不行,常常會有許多觀念錯誤之處。
有一種用法是在ApplicationController裡面預先寫好處理Session的程式碼,這樣在其他Controller裡頭就可以透過before_filter直接拿來用。
例如: http://pastie.textmate.org/58217
理論上不應該把整台購物車存到Session,但我暫時用#3,因為能夠1行完成的,就不弄成3, 4行。
處理Session要有幾個基本的觀念:
- 存進去的物件要盡量小,例如model的id多半是整數,那麼就很適合存入Session。
- 有空要去清。例如開發時,可以直接清tmp/sessions目錄下的暫存檔,或Session table;正式上線當然要寫batch去清。
- 記得寫expire的code。
- 不需要經過額外的Marshal處理。就算是檔案型Session系統也會自動處理並轉換,這一部份不需要額外用dump什麼的。
