Сеанс Rails не сохраняется после перенаправления

Я использую хранилище сеансов для сохранения данных в сеансах. Мои инициализаторы /session _store.rb выглядят так:

::Application.config.session_store :active_record_store

Добавление данных в код сеанса:

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

Я просматриваю данные сеанса на другой странице. Доступ к данным сеанса:

book = session[:abc]

Проблема в том, что мои данные сеанса не сохраняются между переадресациями. В чем может быть проблема?

Я вижу, что мой сеанс сохраняет данные так, как ожидалось, но потерял некоторые данные из него, когда перенаправление происходит и теряется даже больше, если снова происходит перенаправление. Разочарование это.

Ответ 1

Вы можете попробовать это передайте идентификатор книги в сеанс вместо всего объекта книги.

например.

в странице A

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

в странице B

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

Ответ 2

Разве вы не забыли добавить таблицу сеансов?

rails g active_record:session_migration
rake db:migrate

Ответ 3

Вы можете написать метод в модели книги.

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