2014-05-24 32 views
4

我想創建一個用戶排名。它應該按添加事件的次數降序排列用戶。排名軌道

這是我的文件:

User.rb:

class User < ActiveRecord::Base 
    has_many :events 
    #... 
end 

ranking.html.erb:

<tr> 
    <% User.all.each do |user| %> 
    <td> <%= user.name %></td> 
    <td> <%= user.events_count %></br></td> 
<% end %> 
</tr> 

schema.rb:

create_table "users", force: true do |t| 
    #... 
    t.integer "events_count", default: 0 
end 

怎麼辦它?

回答

5

我猜你想要使用計數器緩存。

Event.rb

class Event < ActiveRecord::Base 
    belongs_to :user, counter_cache: true 
end 

ranking.html.erb

<tr> 
    <% User.order(events_count: :desc).each do |user| %> 
    ... 
+0

非常感謝您!這就是我想要的 :) – rewarien