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

时间:2015-04-09 16:01:12

标签: ruby-on-rails session ruby-on-rails-4

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

::Application.config.session_store :active_record_store

向会话代码添加数据:

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

我正在另一个页面访问此会话数据。访问会话数据:

book = session[:abc]

问题是我的会话数据在重定向之间没有持久存在。可能是什么问题?

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

3 个答案:

答案 0 :(得分:6)

你可以试试这个 将书籍ID传递给会话而不是整本书籍对象。

e.g。

第A页

中的

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

中的

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

答案 1 :(得分:4)

你没有忘记添加会话表吗?

rails g active_record:session_migration
rake db:migrate

答案 2 :(得分:4)

您可以在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