3

我想知道向 Devise 的 session#destroy 操作添加额外功能的最佳方式是什么。

为了提供一些背景信息,我正在创建一个用户拥有购物车的网站,当用户的会话超时或他注销时,我希望他的购物车被标记为非活动状态。

我发现了这个,但我有点犹豫是否要覆盖 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 回答