Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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会话id为零_Ruby On Rails_Session - Fatal编程技术网

Ruby on rails Rails会话id为零

Ruby on rails Rails会话id为零,ruby-on-rails,session,Ruby On Rails,Session,我有一个Rails2.3.5应用程序,我正在迁移到Rails3.0.10,它遇到了会话问题 sid1 = session[:session_id] sid2 = request.session_options[:id] 某些代码在集成测试期间失败,因为会话没有id(request.session是空哈希,request.session_options[:id]为nil)。我们目前正在使用webrat,但同样的情况也发生在水豚和标准rails助手上。会话似乎设置正确,因为一些集成测试

我有一个Rails2.3.5应用程序,我正在迁移到Rails3.0.10,它遇到了会话问题

sid1 = session[:session_id]      
sid2 = request.session_options[:id]
某些代码在集成测试期间失败,因为会话没有id(request.session是空哈希,request.session_options[:id]为nil)。我们目前正在使用webrat,但同样的情况也发生在水豚和标准rails助手上。会话似乎设置正确,因为一些集成测试具有会话ID。似乎只有在尝试访问会话id之前未登录的测试(即大多数测试)中缺少会话id

我尝试将会话后端(当前基于cookie)切换到ActiveRecord,但没有任何帮助。我已经创建了一个新的Rails 3.0.10应用程序,它也有零会话ID。我甚至深入研究了Rails的会话处理,如果某个会话缺少会话id,则看起来没有生成会话id


这种缺少会话ID的行为是否是某个地方记录的预期行为?如果这是一个bug,那么有没有一个版本的Rails可以正确地生成会话ID?

我所看到的唯一解决方法就是初始化会话

sid1 = session[:session_id]      
sid2 = request.session_options[:id]

但是,如果出于某种原因删除了会话cookie,它仍然可能发生。

我尝试了,但没有结果。我还尝试了session[:foo]=“bar”,因为我喜欢它看起来更好的方式,但仍然没有结果


我重新启动了,仍然没有快乐。然后我进入我的浏览器设置并删除了我的cookies。这就解决了问题。从这个经验来看,cookie似乎可以防止会话被强制执行。我一直在更改类名和数据库表。不知何故,我破坏了我的cookie。

我刚刚在Rails 3.2.8应用程序和Capybara 2.0.1上遇到了同样的情况。有更新吗?