Rails会话在重定向后不会持久化

我正在使用会话存储将数据保存到会话中。 我的initializers / session_store.rb看起来像:

::Application.config.session_store :active_record_store 

将数据添加到会话代码:

 book = Book.find(1) session[:abc] = book 

我在不同的页面访问此会话数据。 访问会话数据:

 book = session[:abc] 

问题是我的会话数据没有在重定向之间保留。 可能是什么问题呢?

我可以看到我的会话正在按预期保存数据,但是当重定向发生时它会丢失一些数据,如果再次重定向则会丢失更多数据。 令人沮丧的是。

您可以尝试将此通行簿ID转换为会话而不是整本书对象。

例如

第A页

 book = Book.find(1) session[:abc] = book.id 

第B页

 book = Book.find(session[:abc]) 

你没忘记添加会话表吗?

 rails g active_record:session_migration rake db:migrate 

您可以在Book模型中编写方法。

 def self.current=(book) Thread.current[:current_book] = book end def self.current Thread.current[:current_book] end 

将数据添加到会话代码,

 book = Book.find(1) Book.current = book 

并且,要从会话访问书籍,您可以调用方法

 Book.current