Как настроить Devise для хранения дополнительной информации в сеансе? - PullRequest
1 голос
/ 29 июля 2011

Кажется, что когда Devise регистрирует пользователя, в сеансе сохраняется только идентификатор пользователя.Это означает, что всякий раз, когда вызов current_user приводит к запросу SQL (что-то вроде User.find(:id)) для создания объекта User, который во многих случаях является ненужной загрузкой.
Например, мы можем захотеть отобразить имя пользователя вверхний правый заголовок, который находится в файле макета и отображается в каждом ответе.Для этого мы можем просто написать current_user.name, что вызывает запрос SQL к таблице пользователей.

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

Каково правильное решение этой проблемы?

1 Ответ

2 голосов
/ 29 июля 2011

Преодолеть это уже.Этот SQL-запрос по сути бесплатный.Если вы действительно видите проблемы с производительностью User.find(id), то ваше приложение / база данных / сервер полностью испорчено.

Кроме того, благодаря сохранению большего количества данных в сеансе вы открываете возможность отображения данных,дольше текущий.Вы разрешаете пользователю редактировать свою информацию - если так, что происходит, когда они редактируют свое имя?Это хлопот, который не имеет реальной выгоды.

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