设计:会话#untroy的调用方法

时间:2012-05-28 19:43:49

标签: ruby-on-rails ruby-on-rails-3 devise

我想知道为Devise的会话添加额外功能的最佳方法是#destroy action。

为了给出一些背景信息,我正在创建一个用户拥有购物车的网站,当用户的会话超时或退出时,我希望他的购物车被标记为无效。

我发现this但是我有点犹豫要不要覆盖Devise控制器,因为它看起来有点乱......

当用户的会话被销毁时,还有其他方法可以将此购物车设置为非活动状态吗?

1 个答案:

答案 0 :(得分: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