Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 设计:会话调用方法#销毁_Ruby On Rails_Ruby On Rails 3_Devise - Fatal编程技术网

Ruby on rails 设计:会话调用方法#销毁

Ruby on rails 设计:会话调用方法#销毁,ruby-on-rails,ruby-on-rails-3,devise,Ruby On Rails,Ruby On Rails 3,Devise,我想知道为Desive的会话#销毁操作添加额外功能的最佳方法是什么 为了提供一些上下文信息,我正在制作一个网站,用户有购物车,当用户的会话超时或他注销时,我希望他的购物车被标记为非活动 我发现了,但我有点犹豫是否要覆盖Desive控制器,因为它看起来有点凌乱 当用户的会话被破坏时,是否有其他方法将此购物车设置为非活动状态?我建议您从Desive派生控制器,并将其挂接到操作上,这样您就可以安全地远离Desive的内部 # routes.rb devise_for :users, :controll

我想知道为Desive的会话#销毁操作添加额外功能的最佳方法是什么

为了提供一些上下文信息,我正在制作一个网站,用户有购物车,当用户的会话超时或他注销时,我希望他的购物车被标记为非活动

我发现了,但我有点犹豫是否要覆盖Desive控制器,因为它看起来有点凌乱


当用户的会话被破坏时,是否有其他方法将此购物车设置为非活动状态?

我建议您从Desive派生控制器,并将其挂接到操作上,这样您就可以安全地远离Desive的内部

# 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
#routes.rb
为:用户,:控制器=>{:会话=>“会话”}等设计
#会话\u controller.rb
类sessioncontroller:销毁
def设置车处于非活动状态!
除非用户已登录注销成功?
#代码在这里
结束
结束
结束

这看起来不错。我唯一的问题是为什么需要
除非
子句?用户不应该总是在会话结束后注销吗#销毁?完全可以覆盖Desive控制器。你可能害怕深入研究这些东西,但为了实现额外的功能,覆盖designe是正常的。如果有疑问,请使用来源Luke。