General Active Record присоединяется или включает - PullRequest
2 голосов
/ 07 февраля 2012

У меня есть две модели / таблицы A и B. Я хотел бы выполнить запрос Active Record, где результаты включают столбцы из обеих таблиц.Я попробовал внутренние объединения , поскольку они звучали так, как будто они объединяют столбцы из обеих таблиц.Однако попытка метода Active Record joins возвращает результаты только из первой таблицы.

Какие запросы Active Record включают в результаты столбцы из двух таблиц? Возможно, метод поиска includesможет помочь.

Редактировать : думайте о двух таблицах как ForumThreads и Posts.Каждая ветка форума имеет несколько сообщений.Я хотел бы, чтобы строки в результатах запроса содержали информацию для каждого сообщения и информацию для ветки форума (например, заголовок ветки).

Этот вопрос мог бы ответить на мой вопрос: Rails Joins andвключить столбцы из таблицы соединений

1 Ответ

9 голосов
/ 07 февраля 2012

Объединения выполняет внутреннее объединение, но не возвращает данные, пока вы не запросите их.

User.where(:id => 1).joins(:client_applications)
User Load (0.2ms)  SELECT "users".* FROM "users" INNER JOIN "client_applications" ON "client_applications"."user_id" = "users"."id" WHERE "users"."id" = 1

Включает выполнит два запроса (используя где в) и кеширует связанные данные (Eager Loading)

User.where(:id => 1).includes(:client_applications)
User Load (0.4ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1
  ClientApplication Load (13.6ms)  SELECT "client_applications".* FROM "client_applications" WHERE "client_applications"."user_id" IN (1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...