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