Как мне использовать «include» в операторе Rails 3 AREL? - PullRequest
2 голосов
/ 29 июня 2011

Я пытаюсь увидеть SQL позади и оператор AREL:

Brand.where(:subdomain => "coke").includes(:products).to_sql

марка имеет множество продуктов, а товар принадлежит марке.

Однако вышеприведенное утверждение дает только:

"SELECT `brands`.* FROM `brands` WHERE `brands`.`subdomain` = 'coke'"

Почему я не вижу информацию для таблицы products в SQL?

1 Ответ

6 голосов
/ 30 июня 2011

Когда вы используете оператор includes, Rails будет генерировать отдельный запрос для каждой таблицы (поэтому, если вы включите 2 другие таблицы, всего будет 3 запроса).

Вместо этого вы можете использовать оператор joins, и он объединит все это в один запрос, однако вы можете столкнуться с падением производительности. Кроме того, если какой-либо из ваших where(...) условий запрашивает включенную таблицу, он будет объединен в один запрос.

См. этот другой похожий вопрос для получения дополнительной информации о поведении Rails.

...