Ruby on rails 使用Ruby on Rails创建前5名排行榜

Ruby on rails 使用Ruby on Rails创建前5名排行榜,ruby-on-rails,leaderboard,Ruby On Rails,Leaderboard,我的网站上的用户每次点击他们发布的链接都会获得积分。现在我可以用 @users = User.all <table> <tr> <th>User</th> <th>Points</th> </tr> <% @users.sort_by{|u| u.clicks.size }.reverse.each do |u| %> <tr> <td><%= u.nam

我的网站上的用户每次点击他们发布的链接都会获得积分。现在我可以用

@users = User.all

<table>
<tr>
 <th>User</th>
<th>Points</th>
</tr>
<% @users.sort_by{|u| u.clicks.size }.reverse.each do |u| %>
  <tr>
    <td><%= u.name %></td>
    <td><%= u.clicks.size %></td>
  </tr>
<% end %>
</table>
@users=User.all
使用者
要点
我怎样才能让块遍历所有用户,然后只显示前5名?如果方法不起作用,则使用中断

那么:

@users.sort_by{|u| u.clicks.size }.reverse[0...5].each do |u|
或者通过对排序方式进行否定来完全取消反向:

@users.sort_by{|u| -u.clicks.size }[0...5].each do |u|
或者,您可以让数据库为您进行排序:

@users = Users.joins(:clicks).order("clicks.size DESC").limit(5)
那么:

@users.sort_by{|u| u.clicks.size }.reverse[0...5].each do |u|
或者通过对排序方式进行否定来完全取消反向:

@users.sort_by{|u| -u.clicks.size }[0...5].each do |u|
或者,您可以让数据库为您进行排序:

@users = Users.joins(:clicks).order("clicks.size DESC").limit(5)