3

Deviseのsession#destroyアクションに機能を追加するための最良の方法は何でしょうか。

コンテキストを説明するために、ユーザーがカートを持っているWebサイトを作成しています。ユーザーのセッションがタイムアウトするか、ログアウトしたときに、カートに非アクティブのラベルを付けます。

私はこれを見つけましが、少し厄介なように見えるので、Deviseコントローラーをオーバーライドするのを少しためらっています...

ユーザーのセッションが破棄されたときにこのカートを非アクティブに設定する他の方法はありますか?

4

1 に答える 1

5

デバイスからコントローラーを派生させ、アクションにフックすることをお勧めします。これにより、デバイスの内部から安全に遠ざけることができます。

# 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
于 2012-05-28T20:16:24.830 に答える