Sql 基于ActiveRecord assoc和值获取对象集合

Sql 基于ActiveRecord assoc和值获取对象集合,sql,ruby-on-rails,ruby,activerecord,Sql,Ruby On Rails,Ruby,Activerecord,我有两个模型/表格,学校和评论。我想根据最少的评论数量,然后根据评论表上一列的平均值,得到一个学校对象的集合。目前,我的查询运行良好,返回所有学校,从平均值5.0到最后为空,如下所示: School.joins('LEFT JOIN reviews ON schools.id = reviews.school_id') .group('schools.id') .order('AVG(reviews.overall_experience_rating) DESC NULL

我有两个模型/表格,学校和评论。我想根据最少的评论数量,然后根据评论表上一列的平均值,得到一个学校对象的集合。目前,我的查询运行良好,返回所有学校,从平均值5.0到最后为空,如下所示:

School.joins('LEFT JOIN reviews ON schools.id = reviews.school_id')
      .group('schools.id')
      .order('AVG(reviews.overall_experience_rating) DESC NULLS LAST')
但是,我希望这里有一个限制器,只有当它有15个或更多的评论时,才选择学校对象,比如:

where("school.reviews.count >= 15")

活动记录中两个模型之间的关联是一对多关系。有什么想法吗?

我发现在ActiveRecord中使用
拥有
正是我所需要的:

School.joins(:reviews)
  .group('schools.id')
  .having("COUNT(reviews) > ?", 15)
  .order('AVG(reviews.overall_experience_rating) DESC NULLS LAST')

如果您正确设置了关系,请使您的联接看起来更漂亮:
。联接(:reviews)
-rails将自动发挥作用