我正在使用会话存储将数据保存到会话中。我的initializers / session_store.rb看起来像:
::Application.config.session_store :active_record_store
向会话代码添加数据:
book = Book.find(1)
session[:abc] = book
我正在另一个页面访问此会话数据。访问会话数据:
book = session[:abc]
问题是我的会话数据在重定向之间没有持久存在。可能是什么问题?
我可以看到我的会话正在按预期保存数据,但是当重定向发生时它会丢失一些数据,如果再次重定向则会丢失更多数据。令人沮丧的是。
答案 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