Где хранятся флеш-сообщения? - PullRequest
5 голосов
/ 07 сентября 2011

Я думал, что они хранятся в куки, но нет, проверка куки ничего не дает.Сессии также не хранят их.Итак, где я могу их найти?

Мне нужно это, чтобы установить их напрямую (не через flash хеш).

Ответы [ 3 ]

9 голосов
/ 07 сентября 2011

Они хранятся в вашем хранилище сеансов . По умолчанию, так как rails 2.0 - это хранилище cookie, но отметьте config/initializers/session_store.rb, чтобы проверить, используете ли вы что-то отличное от значения по умолчанию.

2 голосов
/ 07 сентября 2011

Согласно APIdock: ActionController / Flash , оно сохраняется в сеансе.

Обратите внимание, что если сеансы отключены, будет работать только flash.now.

При использовании flash.now ваши значения недоступны в следующем запросе.

0 голосов
/ 13 мая 2017

Я искал более подробный ответ и в итоге нашел его в ходе расследования.Следующее применимо, если ваш проект хранит свой сеанс в базе данных Postgres.

ПРИМЕЧАНИЕ: Ваше приложение может иметь подключения более чем к одной БД.Я до сих пор не понял, как Rails определяет, какие из этих соединений использовать.session_store.rb моего проекта пусто.

Вы найдете флэш-сообщения в таблице sessions.Существует столбец с именем data, содержащий строку в кодировке base64.

Если вы расшифруете строку, вы найдете двоичный двоичный объект, который содержит не только флэш-сообщения (в виде маршала, поэтому они могут представлять любой тип объекта Ruby), но также маркер CSRF и несколькодругие вещи.

Весь блоб на самом деле представляет собой маршаллированный хеш-стол.Он может быть распакован в Ruby с помощью Marshal.load, а после внесения любых изменений он может быть перезапущен с помощью Marshal.dump.

...