Ruby on Rails sqlite3 ranking

I am making a browser-based game using ruby on rails and I am having
trouble implementing a ranking system for my game. Each player has
five skills: intelligence, creativity, strength, charisma and
technological. I want the player to have a rank for each skill. The
ranking I have in place right now gives the same rank if two players
have the same amount of skill.

SELECT COUNT(*) AS [rank] FROM players "+
"WHERE intelligence >= "+
"(SELECT intelligence FROM players WHERE id = #{@player.id})

I want each player to have a different rank even if they have the same
amount of skill as another player but I can’t seem to figure out how
to implement that. I have an intelligence column and an irank column,
the same for the rest of the skills, and I was thinking that I could
first sort the intelligence column and then according to that sorting
assign a number to the irank column from 1 and so on but I can’t
figure out how to exactly implement this. I was thinking maybe a for
loop or a .each do loop but I hit a roadblock. I know I can do
Player.all(:order => ‘intelligence DESC’) to sort it but after that
I’m stumped.

I would appreciate any hints or help that anyone could provide me if
willing. Thanks.

what if:
ranked_players = Array.new
Player.all(:order => ‘intelligence’).each_with_index do |player|
ranked_players << “#{index + 1}. #{player[:name]} with
#{player[:intelligence]} intelligence”
end

#now you have ranked players list
ranked_players.each do |player|
puts player
end

Correction:
ranked_players = Array.new
Player.all(:order => ‘intelligence’).each_with_index do |player, index|
ranked_players << “#{index + 1}. #{player[:name]} with
#{player[:intelligence]} intelligence”
end

#now you have ranked players list
ranked_players.each do |player|
puts player
end

I’m sorry. Of course |player, index| it’s my misprint

Thanks you guys for the responses. I greatly appreciate it. I am going
to implement this into my website and see how it works. thanks. : )

hey, so I put the code in my website and this is what it outputted for
me. I used ranked_players[0] and so on to get the output.

  1. nascargurly with 30 intelligence 1. nascargurly48 with 30
    creativity 1. nascargurly48 with 10 strength 1. nascargurly48 with 10
    charisma 1. nascargurly48 with 30 technological
    2 2. nascargurly48 with 90 intelligence 2. nascargurly with 30
    creativity 2. nascargurly with 10 strength 2. nascargurly with 10
    charisma 2. nascargurly with 90 technological

It shows nascargurly with 30 intelligence higher than nascargurly48
with 90 intelligence when it should be the other way around. Its like
its ordering by the way things are added to array then by the order of
intelligence. I added nascargurly to the website after nascargurly48.
the command prompt says its ordering by intelligence but the array
doesnt show it. Any ideas?