Rails - 按关联的平均值排序

Fab*_*lbi 5 sql activerecord ruby-on-rails

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

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

显然,这个

includes(:reviews).order("reviews.rating_out_of_ten desc")
Run Code Online (Sandbox Code Playgroud)

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

提前谢谢了

Fuz*_*ree 2

为了按平均电影分数排序,请加入评论表并使用avgorder by 子句中的函数,即

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')
Run Code Online (Sandbox Code Playgroud)