更好地理解Rails会话

时间:2012-01-06 16:17:36

标签: ruby-on-rails

我正在使用带有默认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尝试了这个例子,现在在我的数据库中看到相同的结果,在会话表中显示为新行。

非常感谢!

1 个答案:

答案 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