Получение вложенных объектов с Active Record Join без включений - PullRequest
0 голосов
/ 30 мая 2018

У меня есть запрос Active Record, который включает JOIN с использованием оператора SQL.

TableA.where(:b_id => "123")
      .joins("INNER JOIN TableB ON column1='value1' AND column2 = TableB.id")

, где column1 и column2 принадлежат TableA

Причина, по которой я вынужден использовать SQL, заключается в том, что у меня нет определенной связи между двумя таблицами (по другим причинам), и я не нашел способа задать предложение ON для столбцов, используя Active Record JOIN

Поскольку у меня не определено отношение, я не могу использовать : включает и, следовательно, не имеет доступа к столбцам TableB в результатах.Есть ли способ получить данные TableB, изменив вышеуказанный запрос?

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете добавить столбцы в запросе select.

TableA.select('TableA.*, TableB.column1, TableB.column2')
      .where(:b_id => "123")
      .joins("INNER JOIN TableB ON column1='value1' AND column2 = TableB.id")

ПРИМЕЧАНИЕ. Столбцы в записи TableA могут не отображатьсяв консоли рельсов.Используйте as_json, чтобы проверить, получили ли вы их в результате

...