如何使用ActiveRecord中的其他表的列检索另一个表中的所有表和所有已连接的记录

问题描述 投票:0回答:1

我想检索所有一个表和所有连接记录。

我想从两个表中获得所有列

这在SQL中非常简单

EG

SELECT * 
FROM students
JOIN teachers
ON students.id = teachers.student_id

我怎么能在铁轨上做同样的事情?

我尝试过变种

Student.includes(:teacher)

Student.joins(:teacher).includes(:teacher)

连接正在运行,但我无法访问Teacher表中的列

请注意,最终目标只是能够在控制器中创建实例变量,以便我可以访问视图中的学生和教师数据

ruby-on-rails ruby-on-rails-5
1个回答
0
投票

Student.includes(:teacher)将返回ActiveRecord::CollectionProxy,这意味着如果在此集合中采取特定对象,它将是Student类对象。

与从2个表中触发和返回数据的sql查询不同,它在rails中不起作用,只从students列获取数据,这将关联teachers表中的相关记录,因为它代表Student模型。

您可以访问更多teachers数据,如,

  students = Student.includes(:teacher)
  students.last.teacher.name

在上面,当您在对象上调用teacher关联时,不会在数据库中触发新查询

© www.soinside.com 2019 - 2024. All rights reserved.