2009-11-14 3 views
-1

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

Я чувствую, что база данных Колонка для обитания - излишняя. Это смещение будет 0..n целое.

+0

Не похоже на понимание - можете ли вы подробнее объяснить и/или дать нам схему? –

ответ

1

Предполагая, что я правильно понял ваш вопрос:

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

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

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

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

+0

Благодарим вас за ответ. Это смещение должно быть установлено равным 0, когда будет выполнен новый сеанс, поэтому сеанс будет достаточно хорош, чтобы сохранить это смещение. Это смещение передается для навигации изображений на стене, где пользователь может перемещаться по оси x и y. Я сделал намерение сохранить данные db, и, похоже, это работает. Надеюсь, это не вызовет больших проблем, когда будет больше пользователей? – ttomppa

Смежные вопросы