我正在开发一个Rails 2.3.2应用程序。
我需要保留session_id作为订单记录,将其检索,最后在订单完成后删除session_id。
当我将cookie用作 session 存储时,它起作用了,但对active_record存储却不起作用。
(我重新启动了浏览器,所以没有缓存问题。)
我知道Rails 2.3实现了惰性 session 加载。
我阅读了一些相关信息,但仍然感到困惑。
有人可以澄清在这种情况下如何使用session_id吗?
我正在做的是...
用户下订单要经历几页。
没有注册,也没有登录。
因此,我将session_id保留在订单记录中,以便其他用户无法访问该订单。
@order = Order.last:conditions => {:id => params [:id],:session_id => session [:session_id]}
当命令完成时,我将nil设置为session_id列。
您将如何在惰性 session (和active_record存储)环境中实现这种情况?
谢谢。
山姆
最佳答案
我在编写购物车时遇到了同样的问题。实际上有两个问题。
从rails 2.3开始, session 被延迟加载,session [:session_id]不再起作用。您必须先访问该 session ,然后才能使用它。
puts request.session_options[:id]
session[:session_id] # this forces load of the session in Rails 2.3.x
puts request.session_options[:id]
输出:
nil
78eb1e371f3378ed98874f9ce372d652
更新:session.session_id已被弃用,因此请使用request.session_options [:id]。
更新2 :此问题将在3.x(而非2.3.5)https://rails.lighthouseapp.com/projects/8994/tickets/2268-rails-23-session_optionsid-problem中修复
格雷格
关于ruby-on-rails - Rails 2.3 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1035933/