Я реализую систему пари, и у каждого пользователя есть баланс, как я могу найти разряд пользователя, использующего activerecord методы?спасибо за помощь.
Чтобы получить ранг пользователя,
Users.all(:order => "balance").index(a_particular_user)
Это должно дать вам индекс (ранг) конкретного пользователя в массиве всех пользователей (отсортированных по балансу).
Если я понял, чего вы хотите, вам просто нужно упорядочить пользователей по балансу
User.all(:order => "balance")
Edit: если только баланс
не является атрибутом...
Edit#2: после просмотра ответа Дрю Джонсона я понял, что неправильно понял ваш вопрос. Как он сказал, вы можете использовать метод index
для того, чтобы сделать то, что вы хотите.
@user = User.first
@rank = User.all(:order => "balance").index(@user)
несколько дней назад я задал точно такой же вопрос
Положение объекта в базе данных
мое решение было таким же, как и @Drew Johnson предложено ( User.all.index current_user
). Но мне нужно было «решение для запросов», и @Vlad Zloteanu дал мне отличную идею:
User.count(:order => "balance", :conditions => ['balance < (?)', current_user.balance])
это быстрое решение для запросов для больших таблиц данных.