Как я могу отобразить информацию * конкретного * пользователя через переменную экземпляра в Ruby on Rails? - PullRequest
0 голосов
/ 30 марта 2011

Это код, который я сейчас использую:

profile_controller.rb:

@user = User.first :conditions => [ "lower(username) = ?", params[:id].downcase ]

show.html.haml:

.footer #{@user.bets.count} -# This displays 0, even though I can see that the user has multiple bets associated with his username in the db

Мои пользователи входят в систему через Twitter, и их имена пользователей могут отличаться в любом случае (например, BOB, bob, BoB, Bob и т. Д.), И, естественно, любая информация, связанная с их именем пользователя, должна отображаться соответствующим образом независимо от того, как пользователи войдите в систему.

Одна странная ошибка, с которой я сталкиваюсь, заключается в том, что вся связанная с именем пользователя информация теряется при выходе пользователя из системы и повторном входе; однако, это происходит на первый взгляд в случайные моменты времени. То есть пользователь может выходить из системы и входить в нее несколько раз без проблем, но время от времени, похоже, теряет всю связанную информацию в профиле.

Любые советы о том, как я могу убедиться, что это не так? Код контроллера, который я отправил, правильный, или я должен проверять другой параметр, отличный от param[:id]?

РЕДАКТИРОВАТЬ: Спасибо за комментарии, ребята. Оказывается, я перезаписывал информацию о пользователях, если они просто входили с разными вариантами регистра. Я убрал это, и теперь оно работает.

Ответы [ 2 ]

0 голосов
/ 30 марта 2011

Вы можете попытаться явно включить bets при получении пользователя:

@user = User.includes(:bets).where("lower(username) = ?", params[:id].downcase).first

, который автоматически получит все связанные ставки.

Обычно при использовании @user.bets он загружается лениво, но после загрузки он просто использует bets в памяти.Чтобы явно загрузить все ставки снова из базы данных, вы также можете написать:

@user.bets.reload.count
0 голосов
/ 30 марта 2011

Возможно, вы ищете что-то вроде:

@user = User.where(:username => params[:username].downcase).first
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...