我的用户模型有一个方法得分,实际上得到了已解决挑战得分的总和:
def score
self.challenge_level_solutions.inject(0) do |sum, x|
sum + x.challenge_level.points
end
end
现在,我有一个与Kaminari相关的控制器动作,如:
def index
@users = User.page(params[:page])
end
我的问题是如何以DESC顺序显示用户分数,即向用户显示分数较低的其他分数。我的观点是:
<% @users.each_with_index do |user, index| %>
<%= user.username %> - <%= user.score %>
<br>
<% end %>
并显示:
1. user1 - 0
2. user2 - 0
3. user3 - 2
任何想法都能正确显示,首先是user3吗?
答案 0 :(得分:3)
def index
@users = User.all.sort_by(&:score).reverse
@users = Kaminari.paginate_array(@users).page(params[:page]).per(2)
end
答案 1 :(得分:1)
执行此操作的ruby方法是使用collection.sort_by
示例:
collection.sort_by{|o|o.score}
链.reverse / .reverse!如果需要的话。