Как получить все из одной таблицы и все объединенные записи в другой с помощью столбцов другой таблицы в ActiveRecord - PullRequest
0 голосов
/ 27 февраля 2019

Я хотел бы получить все из одной таблицы и все объединенные записи в другой.

Я хотел бы иметь все столбцы из обеих таблиц

Это очень просто в SQL

например

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

Как я могу сделать то же самое в рельсах?

Я пробовал варианты для

Student.includes(:teacher)

и

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

Объединение работает, но я не могу получить доступ к столбцам из таблицы учителя

Обратите внимание, что конечная цель состоит в том, чтобы просто иметь возможность создать переменную экземпляра в контроллере, чтобы я мог получить доступ к как данным ученика и учителя в представлении

1 Ответ

0 голосов
/ 27 февраля 2019

Student.includes(:teacher) вернет ActiveRecord::CollectionProxy, что означает, что если взять конкретный объект в этой коллекции, это будет Student объект класса.

В отличие от запроса SQL, сгенерированного и возвращающего данные из 2 таблиц, он неРаботая так же в рельсах, вы получаете данные только из столбца students, который будет связывать связанную запись в таблице teachers, потому что она представляет Student модель.

Вы можете получить доступ к следующим teachers данным, как,

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

Выше ни один новый запрос не будет запущен в базе данных, когда вы вызовете teacher сопоставление с объектом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...