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

У меня есть две таблицы: keyword_reports и ключевые слова (с соответствующими моделями AR).

keyword_reports имеет столбец keyword_id, который я использую для присоединения к таблице ключевых слов, например:

KeywordReport.find(:all, :joins => :keyword, :conditions => {:page_id => 10})

, который корректно возвращает записи для keyword_reports, но не включает данные из объединенной таблицы ключевых слов.

Я посмотрел журнал, чтобы увидеть сгенерированный SQL, и он делает:

SELECT `keyword_reports`.* from...

вместо:

SELECT * from ...

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

Как запретить запросу ограничивать результаты только первой таблицей?

Ответы [ 2 ]

1 голос
/ 31 марта 2010

У меня была такая же проблема, и я решил ее с помощью:

:select => '*'

В моем случае это работает, просто будьте осторожны с столбцами с одинаковыми именами в таблицах. Я думаю, что только один из столбцов будет доступен. Для решения этой проблемы вы можете использовать:

:select => '*, tbl1.field as field1, tbl2.field as field2'

Надеюсь, это поможет.

0 голосов
/ 03 февраля 2010

думаю, что вы, вероятно, опечатка. :include (нет) должен это сделать.

KeywordReport.find(:all, :include => :keyword, :conditions => {:page_id => 10})

Предполагается, что в модели установлена ​​взаимосвязь

#KeywordReport
belongs_to :keyword

Надеюсь, это поможет вам выбрать правильный путь

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