Session rails会话存储异常行为

Session rails会话存储异常行为,session,ruby-on-rails-3,Session,Ruby On Rails 3,我正在rails应用程序中使用active_record_store,该应用程序将此存储在会话[:email]=email@address.com 现在,这在动作中效果很好。但当此操作结束并重定向到另一个页面时,该页面也会访问同一会话[:email],我会收到一个错误 undefined method `eq' for nil:NilClass 这可能意味着我正在尝试比较某个不允许比较的地方的值。但我在代码中看不到任何类似的内容。这看起来像一个老问题,但我也遇到了同样的问题,必须自己解决,我想

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

现在,这在动作中效果很好。但当此操作结束并重定向到另一个页面时,该页面也会访问同一会话[:email],我会收到一个错误

undefined method `eq' for nil:NilClass

这可能意味着我正在尝试比较某个不允许比较的地方的值。但我在代码中看不到任何类似的内容。

这看起来像一个老问题,但我也遇到了同样的问题,必须自己解决,我想我会将解决方案发布到这里,以供遇到此问题的其他人使用。它没有很好的文档记录,但要使其发挥作用,您必须添加:

config.action_dispatch.session_store = :active_record_store
到application.rb,以及

Application.config.session_store :active_record_store
配置/initializers/session_store.rb。然后,你必须做:

rake db:sessions:create
以及:

然后,您必须重新启动rails服务器。我认为是db:sessions:create这一步绊倒了原来的海报。不仅该数据库表必须按照rails期望的方式进行布局,即使用“id”列,我认为这是导致此错误的实际原因,而且当前会话必须具有有效的id。因此需要创建表并重新启动服务器,或者如果表存在,则可能清空表

rake db:migrate