Я пытаюсь реализовать ранжирование пользователей с помощью mongodb. Таким образом, у пользователя есть два поля:
field :score, type: Integer, :default => 0
field :solution_count, type: Integer, :default => 0
и для перечисления всех пользователей в таблице результатов можно легко сделать что-то вроде этого:
User.desc(:score, :solution_count).page(params[:page])
Но вопрос таков: как отобразить рейтинг пользователя на странице пользователя?
Очевидно, что нам нужно сохранить ранг , но , где и , как правильно его обновить ?
Самый простой способ сделать это - что-то вроде этого:
# in user.rb
field :rank, type: Integer
# add rake task and execute is with Cron every 10 minutes for example
task :build => :environment do
User.desc(:score, :solution_count).each_with_index do |user, position|
user.update_attribute(:rank, position + 1)
end
end
Есть идеи, как это лучше реализовать?