2017-11-02 1 views
0

에 따라 자식 개체를 검색 할 수 있습니다 :액티브 쿼리 나는 다음과 같은 관계가 깊게 중첩 된 상태

Teacher hasMany Students hasOne Desk 

나는 데스크 조건에 따라 교사의 인스턴스를 사용하여 모든 학생 객체를 검색 할 필요가있다. 나는 이것을 Student 모델을 사용하여 작업하지만, Teacher의 인스턴스를 사용하여 작동시킬 수는 없다.

작업 :

Student.joins(:desk).where(:id => some_id, :desks => {:some_field=>true}) 

바로

다음
teacher.students.where(:desk.some_field=>true) 

답변

1

는 모든 학생들이 관련 얻을 할 줄 무엇인가 작동 할 수 있습니다 이러한 라인을 따라 뭔가를 생각하지만 난 구문을 얻을 수 있었 학생과 관련된 책상 인스턴스 내의 조건에 따라 특정 교사와 상담하십시오.

Teacher.first.students.joins(:desk).where(desk: {some_field: 1}) 

어느 것이 SQL인가 :

SELECT `teachers`.* FROM `teachers` 
    SELECT `students`.* FROM `students` INNER JOIN `desks` ON `desks`.`students_id` = `students`.`id` WHERE `students`.`teacher_id` = some_id AND `desks`.`some_field` = 1 
+1

고마워요. 또한이 쿼리를 "Teacher.first"대신 "Teacher.first"대신 "Teacher.first"대신 Teacher의 인스턴스에서 작동하게하려면 "teacher"가 작동해야합니다. 또한 where 절에서 기호를 사용해야했습니다. 그것이 AR 버전에 좌우되는지 확실하지 않습니다. – mstrom

+1

예! 나는 선생님에 대해 어떤 가정도하고 싶지 않았다. 그래서 나는 단지 첫 번째 선생님에게 질의를하고 그것에 합류했다. – Cyzanfar

관련 문제