Rails:包含M2M表时额外不必要的查询

假设我有一个Teachers表,其中:has_and_belongs_to_many与Students表关系。我有一个students_teachers表,映射字段[teacher_id,student_id]。 当我进行一项发现并希望与所有学生一起培养所有老师时,我会做一个:
Teacher.find(:all, :include => :students)
虽然我已经包含了学生表,但最终仍然会有一个查询提出教师,然后n再查询students_teachers表,而n是从第一个查询返回的教师数。 为什么Rails已经没有加入students_teachers表而是发送了这么多查询?     
已邀请:
这是Rails急切加载的预期行为,以防止N + 1问题(即必须运行查询以查找所有教师,然后每位教师再查询一次以查找所有学生。)请参阅http://guides.rubyonrails .ORG / active_record_querying.html#渴望加载的协会。 如果您想在更少的查询中执行此操作,则需要使用
:joins
    

要回复问题请先登录注册