2012-05-28 106 views
2

我想知道爲Devise的session#destroy動作添加額外功能的最佳方式是什麼。設計:會話調用方法#銷燬

爲了給出一些上下文,我創建了一個用戶有購物車的網站,當用戶的會話超時或他註銷時,我希望他的購物車被標記爲不活動。

我發現this但我有點猶豫覆蓋設計的控制器,因爲它似乎有點亂......

是否有任何其他方式來設置此車爲無效時,用戶的會話被銷燬?

+0

重寫設計控制器是完全可以的。您可能害怕深入研究這些內容,但重寫設計以實現額外功能是正常的。如有疑問,請使用源代碼Luke。 – Ashitaka

回答

4

我的確建議你從設計和鉤子派生出你的控制器,這樣你就可以安全地遠離設計的內部。

# routes.rb 
devise_for :users, :controllers => { :sessions => "sessions" } # etc 

# sessions_controller.rb 
class SessionsController < Devise::SessionsController 

    after_filter :set_cart_inactive!, :only => :destroy 
    def set_cart_inactive! 
    unless user_signed_in? # logout successful? 
     # code here 
    end 
    end 

end 
+0

這看起來不錯。我唯一的問題是爲什麼你需要'除非'條款?用戶不應該在會話#銷燬後總是退出? – varatis