我想检索一个表中的所有表,并检索另一表中的所有联接记录。
我想同时拥有两个表中的所有列
这在SQL中非常简单
例如
SELECT *
FROM students
JOIN teachers
ON students.id = teachers.student_id
如何在Rails中执行相同操作?
我尝试过
Student.includes(:teacher)
和
Student.joins(:teacher).includes(:teacher)
联接正在工作,但是我无法访问“教师”表中的列
请注意,最终目标只是能够在控制器中创建实例变量,以便我可以在视图中访问两者学生和教师数据
答案 0 :(得分:0)
Student.includes(:teacher)
将返回ActiveRecord::CollectionProxy
,这意味着如果采用此集合中的特定对象,它将是Student
类对象。
与sql查询被触发并从2个表返回数据不同,它在rails中无法正常工作,您只能从students
列中获取数据,该列将与teachers
表中的关联记录相关,因为它表示{{ 1}}模型。
您可以访问更多Student
数据,例如
teachers
在上面,当您在对象上调用 students = Student.includes(:teacher)
students.last.teacher.name
关联时,不会在数据库中触发新查询