ruby on rails: хранить данные для current_user на разных моделях - PullRequest
0 голосов
/ 14 ноября 2009

Я пытаюсь сохранить данные из current_user в пользовательской модели с помощью attr_accessor: offset. Я хотел бы получить записи другой модели, используя смещение, сохраненное в модели current_user. Когда я изменяю это смещение от другой модели, оно не сохраняется?

Я чувствую, что столбец базы данных для предложения переполнен. Это смещение будет 0..n целое число.

1 Ответ

1 голос
/ 14 ноября 2009

Если я правильно понял ваш вопрос:

Столбец базы данных действительно единственный способ сохранения данных в модели после перезагрузки. Переменная current_user решает эту проблему, сохраняя ее в сеансах для ваших контроллеров и представлений. Независимо от того, где вы пытаетесь использовать current_user, у меня такое ощущение, что ваша проблема проистекает из метода, которым current_user передается от одного запроса к следующему, любые изменения, которые вы вносите в current_user, не переносятся на следующий запрос.

Идентификатор current_user сохраняется в хеше сеанса при входе в систему. При первом вызове current_user как части действия контроллера модуль authenticated_system находит пользователя на основе идентификатора в хэше сеанса. Это означает, что любые изменения, внесенные вами в current_user, будут потеряны, если вы не сохраните его до завершения действия контроллера. Столбец базы данных - единственный способ сделать это.

Однако вы можете полностью игнорировать текущего пользователя и добавить смещение к хешу сеанса с помощью session[:offset] = offset. Обратитесь к нему в ваших контроллерах / представлениях таким же образом. Пока ваш пользователь не завершит сеанс просмотра, session[:offset] вернет значение смещения, которое вы пытаетесь сохранить.

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

...