Rails - 按模型方法结果排序记录

时间:2014-11-18 03:12:03

标签: ruby-on-rails rails-activerecord

我的User模型有以下方法:

def like_dislike_proportion
  self.likes.to_f / self.dislikes.to_f
end

self.likes和self.dislikes都返回整数。我希望对排名前10位的用户进行排名,最喜欢/不喜欢的比例,以及排名最低的10位用户,排名最低。

我尝试使用

User.order('like_dislike_proportion DESC').limit(10)

但它不起作用,因为like_dislike_proportion不是数据库中的持久属性。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

ranking = User.all.map { |u| 
    {name: u.name, proportion: (u.likes.to_f/u.dislikes.to_f)} 
}.sort_by { |r| r[:proportion] }