我有一个学校和结果模型,其中结果属于学校,学校每年都有结果。每个结果都有一个字段:score,我试图按分数对每个“结果”进行排名,但仅限于每年。所以每年不同的年份会有不同的排名。
1) 获得此排名的最佳方法是什么?
我想到的一种方法是每 10 分钟(例如)运行一次 cron 作业来更新排名
update_rank.rake
task :build => :environment do
Result.where(year: year).desc(:score).each_with_index do |result, position|
result.update_attribute(:rank, position + 1)
end
end
我在这里有一个问题:
2) 我怎样才能对每个不同的年份进行排名?我可以做类似下面的事情,但它似乎有点笨重,我还能做些什么吗?
task :build => :environment do
eachyear = (1990..(Time.now.year)).to_a
eachyear.each do |year|
Result.where(year: year).desc(:score).each_with_index do |result, position|
result.update_attribute(:rank, position + 1)
end
end
end