Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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 更好地理解Rails会话_Ruby On Rails - Fatal编程技术网

Ruby on rails 更好地理解Rails会话

Ruby on rails 更好地理解Rails会话,ruby-on-rails,Ruby On Rails,我将rails会话与默认的Cookie存储一起使用,并使用访问会话对象和读/写变量 session[:my_var] = 'abc' 我可以在我的应用程序上加载设置此会话变量的操作,并在浏览器中查看我的“\u appname\u session”cookie。通过在rails控制台中查看此cookie的内容 Marshal.load(Base64.decode64(CGI.unescape("[paste cookie here]".split("\n").join).split('--').

我将rails会话与默认的Cookie存储一起使用,并使用访问会话对象和读/写变量

session[:my_var] = 'abc'
我可以在我的应用程序上加载设置此会话变量的操作,并在浏览器中查看我的“\u appname\u session”cookie。通过在rails控制台中查看此cookie的内容

Marshal.load(Base64.decode64(CGI.unescape("[paste cookie here]".split("\n").join).split('--').first))
我明白了

一切都好

如果我加载另一个包含代码的操作

session[:another_var] = 'abc'
我再次解码了饼干,但这次我看到了

{:session_id=>"[a different key]", :another_var=> 'abc'}
所以我的问题是,为什么我看到:session\u id的值不同,会话对象/cookie中的:my\u var去了哪里

另外--我使用Active Record Store尝试了这个示例,并在我的数据库中看到了相同的结果,在sessions表中显示为新行


非常感谢

session[:my_var]
session[:另一个_var]
不是一个有两个变量的session,而是两个不同的session

我认为您要做的是创建一个会话,并通过散列将变量分配给它:

session[:my_session] = {:my_var => "abc", :another_var => "abc"}

请参阅。

相同的浏览器?相同的浏览器窗口?哪个浏览器?你确定会话没有在某个地方被清除,比如在应用程序控制器中隐藏在过滤器之前?我想你需要显示更多的代码。这是不规范的行为,所以肯定有其他的东西在干扰。@BenLee你知道吗,我知道这一定是我错过的一些可笑的简单的东西。事实上,我的认证系统中有一些代码正在为注销用户重置会话。谢谢你帮我追查这件事,很抱歉这个被误导的问题!我认为问题是,不清楚为什么会有两次会议<代码>会话[:my\u var]和
会话[:另一个\u var]
如果是相同的浏览器/相同的选项卡/相同的用户(如果有登录),则应该是相同的会话<代码>会话是一次对话的会话。是的,这就是我的意思。为什么“会话”在请求之间表现为两个不同的对象?
session[:my_session] = {:my_var => "abc", :another_var => "abc"}