我正在使用带有默认Cookie存储的rails会话,我正在访问会话对象并使用
读/写变量session[:my_var] = 'abc'
我可以在我的app上加载一个设置此会话变量的动作,并在浏览器中查看我的“_appname_session”cookie。在rails控制台中通过
查看此cookie的内容Marshal.load(Base64.decode64(CGI.unescape("[paste cookie here]".split("\n").join).split('--').first))
我看到了
{:session_id=>"[some long key]", :my_var=> 'abc'}
一切都很好。
如果我加载另一个包含代码的操作
session[:another_var] = 'abc'
我再次解码cookie,但这次看
{:session_id=>"[a different key]", :another_var=> 'abc'}
所以我的问题是,为什么我看到了不同的值:session_id,以及会话对象/ cookie中我的:my_var去了哪里?
另外 - 我使用Active Record Store尝试了这个例子,现在在我的数据库中看到相同的结果,在会话表中显示为新行。
非常感谢!
答案 0 :(得分:-2)
session[:my_var]
和session[:another_var]
不是一个会话,包含两个变量,但共有两个不同的会话。
我认为你想要做的是做一个会话并通过哈希为你的变量分配:
session[:my_session] = {:my_var => "abc", :another_var => "abc"}
请参阅the "What are Sessions?" section in the Rails guides for more details。