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