Rails:Active Record has_many关系始终只从初始查询中获取过滤结果

时间:2016-07-05 16:16:11

标签: ruby-on-rails ruby-on-rails-4 activerecord

我有一个'课程'实体,有很多'学生'。我想获得学生姓名就像'a%'的课程。使用where查询:

courses = Course.students.where('...').to_a 

假设我只有一门课程(A)和许多学生(S1,S2,S3 ......),其中只有两名学生(S1,S2)的名字以字母“a”开头。所以我想要两门课程:A - > S1,A - > S2。现在,当我遍历课程时,'course.students'将成为所有学生(Active Record懒人电话并收集所有学生),我希望第一门课程的学生(courses.first.students)只包含学生S1,第二个只包含学生S1学生S2 in。基本上我想在查询调用后放开活动记录,让学生只返回连接查询。

1 个答案:

答案 0 :(得分:2)

如果您尝试

result = Courses.includes(:students).where("students.name LIKE 'a%'").to_a

你得到1门课程,但如果你下次尝试

result.first.students

您将获得2名学生的名字,其名称以' a'

开头