rails session_store奇怪的行为

时间:2010-10-16 16:04:47

标签: session ruby-on-rails-3

我在rails应用程序中使用active_record_store,该应用程序将其存储在会话session[:email] = "email@address.com"

现在这在行动中运作良好。但是当这个动作结束并被重定向到另一个页面时,它也会访问同一个会话[:email]我收到错误

undefined method `eq' for nil:NilClass

这应该意味着我试图在某些地方比较我不被允许的价值观。但我在代码中看不到类似的东西。

1 个答案:

答案 0 :(得分:0)

这看起来像一个老问题,但我只是遇到了同样的问题而且必须自己解决这个问题,并且我认为我会在这里发布解决方案给其他遇到此问题的人。它没有很好的文档记录,但要使其工作,你必须添加:

config.action_dispatch.session_store = :active_record_store

到application.rb和

Application.config.session_store :active_record_store

到config / initializers / session_store.rb。然后,你必须这样做:

rake db:sessions:create

rake db:migrate

然后,您必须重新启动rails服务器。我认为这是db:sessions:创建一个绊倒原始海报的步骤。这个数据库表不仅必须按照rails预期的方式进行布局(也就是说,使用'id'列,这是导致此错误的真正原因),而且当前会话必须具有有效性ID。因此需要创建表并重新启动服务器,或者如果存在则可能清空表。