Если я правильно понял ваш вопрос:
Столбец базы данных действительно единственный способ сохранения данных в модели после перезагрузки. Переменная current_user решает эту проблему, сохраняя ее в сеансах для ваших контроллеров и представлений. Независимо от того, где вы пытаетесь использовать current_user, у меня такое ощущение, что ваша проблема проистекает из метода, которым current_user передается от одного запроса к следующему, любые изменения, которые вы вносите в current_user, не переносятся на следующий запрос.
Идентификатор current_user сохраняется в хеше сеанса при входе в систему. При первом вызове current_user как части действия контроллера модуль authenticated_system находит пользователя на основе идентификатора в хэше сеанса. Это означает, что любые изменения, внесенные вами в current_user, будут потеряны, если вы не сохраните его до завершения действия контроллера. Столбец базы данных - единственный способ сделать это.
Однако вы можете полностью игнорировать текущего пользователя и добавить смещение к хешу сеанса с помощью session[:offset] = offset
. Обратитесь к нему в ваших контроллерах / представлениях таким же образом. Пока ваш пользователь не завершит сеанс просмотра, session[:offset]
вернет значение смещения, которое вы пытаетесь сохранить.
Но если смещение будет предпочтением пользователя, которое должно сохраняться между сеансами входа в систему, то оно действительно принадлежит вашей пользовательской модели как столбец базы данных.