rails session_store странное поведение - PullRequest
0 голосов
/ 16 октября 2010

Я использую active_record_store в приложении rails, которое хранит это в сеансе session[:email] = "email@address.com"

теперь это отлично работает в действии. но когда это действие завершается и перенаправляется на другую страницу, которая также обращается к тому же сеансу [: email], я получаю сообщение об ошибке

undefined method `eq' for nil:NilClass

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

1 Ответ

0 голосов
/ 31 января 2011

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

config.action_dispatch.session_store = :active_record_store

для application.rb и

Application.config.session_store :active_record_store

для config / initializers / session_store.rb. Затем вы должны сделать:

rake db:sessions:create

и

rake db:migrate

Затем вам нужно перезапустить ваш сервер rails. Я думаю, что это был шаг db: session: create, который споткнул оригинальный постер. Эта таблица базы данных должна быть выстроена не только так, как ожидает rails (то есть со столбцом 'id', который, я думаю, является реальной причиной этой ошибки), но и текущий сеанс должен иметь действительный Я БЫ. Следовательно, необходимо создать таблицу и перезапустить сервер или, возможно, очистить таблицу, если она существует.

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