var*_*tis 3 ruby-on-rails devise ruby-on-rails-3
我想知道为Devise的session#destroy动作添加额外功能的最佳方法是什么.
为了给出一些背景信息,我正在创建一个用户拥有购物车的网站,当用户的会话超时或退出时,我希望他的购物车被标记为非活动状态.
我找到了这个,但我有点犹豫要覆盖Devise控制器,因为它看起来有点凌乱......
当用户的会话被销毁时,还有其他方法可以将此购物车设置为非活动状态吗?
我建议你从设计派生你的控制器并挂钩动作,这样你就可以安全地远离设计的内部.
# 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1936 次 |
| 最近记录: |