繁体   English   中英

Rails 4 ActiveRecord has_many长度条件

[英]Rails 4 ActiveRecord has_many length condition

这个问题看起来很简单,但不知怎的,我无法用ActiveRecord查询包围它:

我有两个关系一对多的课程

class Student

  belongs_to :school

end

class School

  has_many :students, inverse_of: :school

end

我想创建一个范围来获取所有有学生的学校(换句话说,他们的学生收藏规模大于0)。

我知道如何在SQL中写这个,但ActiveRecord让我受到了冲击。 我确实设法用这一行来实现这种行为:

School.joins(:students)

但我仍然想知道在哪里可以指定条件,例如:

School.where("students.length > ?", 0)

不是直接回答您的实际问题,而是替代方案,但使用rails中的“counter_cache”功能可以大大提升关联数量:

class Student
  belongs_to :school, :counter_cache => true

您还需要在schools表中添加'students_count'列,默认值为0.然后,当创建/删除关联时,此计数器会自动更新,并允许简单查询,如下所示:

School.where('students_count > ?, 0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM