Rails - 按关联的平均值排序

时间:2016-02-10 09:40:05

标签: sql ruby-on-rails activerecord

我正在努力在我的假imdb模仿网站中添加排序功能。

我的电影通过协会有很多评论。不幸的是,我无法通过索引页面的评论平均值找到如何订购@movies对象。

显然,这个

includes(:reviews).order("reviews.rating_out_of_ten desc")

没有工作只能通过每部电影的第一次评论来订购。 如何编写它以便按所有相关评论的平均值排序?

非常感谢提前

1 个答案:

答案 0 :(得分:2)

要按平均电影分数排序,请加入评论表并按顺序使用avg功能,即

Movie
    .select('movie_id, movie_name, avg(reviews.rating_out_of_ten)')
    .join(:reviews)
    .group('movie_id, movie_name')
    .order('avg(reviews.rating_out_of_ten) desc')