我的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不是数据库中的持久属性。
我该如何解决这个问题?
答案 0 :(得分:1)
ranking = User.all.map { |u|
{name: u.name, proportion: (u.likes.to_f/u.dislikes.to_f)}
}.sort_by { |r| r[:proportion] }