Лучшее понимание сессий Rails - PullRequest
1 голос
/ 06 января 2012

Я использую сеансы rails со стандартным Cookie Store, и я получаю доступ к объекту сеанса и читаю / записываю переменные с помощью

session[:my_var] = 'abc'

Я могу загрузить действие в моем приложении, которое устанавливает эту переменную сеанса, и посмотреть мой файл cookie "_appname_session" в моем браузере. Просмотр содержимого этого куки в консоли rails, через

Marshal.load(Base64.decode64(CGI.unescape("[paste cookie here]".split("\n").join).split('--').first))

Понятно

{:session_id=>"[some long key]", :my_var=> 'abc'}

Все хорошо.

Если я загружаю другое действие, которое содержит код

session[:another_var] = 'abc'

Я снова декодирую печенье, но на этот раз вижу

{:session_id=>"[a different key]", :another_var=> 'abc'}

Итак, мой вопрос: почему я вижу другое значение для: session_id и куда ушел my: my_var в объекте сеанса / cookie?

Кроме того - я попробовал этот пример с использованием Active Record Store и вижу те же результаты, теперь в моей базе данных, которые отображаются в виде новой строки в таблице сеансов.

Большое спасибо!

1 Ответ

0 голосов
/ 06 января 2012

session[:my_var] и session[:another_var] - это не один сеанс с двумя переменными, но два разных сеанса в целом.

Я думаю, что вы хотите сделать одну сессию и присвоить ей переменные через хеш:

session[:my_session] = {:my_var => "abc", :another_var => "abc"}

См. "Что такое сеансы?" раздел в путеводителях Rails для более подробной информации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...