2
我想知道爲Devise的session#destroy動作添加額外功能的最佳方式是什麼。設計:會話調用方法#銷燬
爲了給出一些上下文,我創建了一個用戶有購物車的網站,當用戶的會話超時或他註銷時,我希望他的購物車被標記爲不活動。
我發現this但我有點猶豫覆蓋設計的控制器,因爲它似乎有點亂......
是否有任何其他方式來設置此車爲無效時,用戶的會話被銷燬?
我想知道爲Devise的session#destroy動作添加額外功能的最佳方式是什麼。設計:會話調用方法#銷燬
爲了給出一些上下文,我創建了一個用戶有購物車的網站,當用戶的會話超時或他註銷時,我希望他的購物車被標記爲不活動。
我發現this但我有點猶豫覆蓋設計的控制器,因爲它似乎有點亂......
是否有任何其他方式來設置此車爲無效時,用戶的會話被銷燬?
我的確建議你從設計和鉤子派生出你的控制器,這樣你就可以安全地遠離設計的內部。
# 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
這看起來不錯。我唯一的問題是爲什麼你需要'除非'條款?用戶不應該在會話#銷燬後總是退出? – varatis
重寫設計控制器是完全可以的。您可能害怕深入研究這些內容,但重寫設計以實現額外功能是正常的。如有疑問,請使用源代碼Luke。 – Ashitaka