我有以下关系:
Teacher hasMany Students hasOne Desk
我需要根据Desk中的条件,使用Teacher实例检索所有Student对象。我使用学生模型工作,但我无法使用教师实例工作。
工作:
Student.joins(:desk).where(:id => some_id, :desks => {:some_field=>true})
正在思考这些方面的内容可能有效,但我无法正确理解
teacher.students.where(:desk.some_field=>true)
答案 0 :(得分: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