@nluparev

Как оптимизировать следующий запрос в Active Record?

есть следующий код:

category = Category.where(slug: params[:category]).first
result = Slide.where(category_id: category.id)


необходимо выбрать некие экземпляры моделей используя значение внешнего ключа родительской таблицы или другими словами модели которой она принадлежит, belongs_to . Модель Category выбирается использую url parameter и затем её id исползуется в качестве значения внешнего ключа для выбора экземпляром моделей Slide.

в SQL тех же результатов я добился следующим образом
SELECT *
FROM
	slides AS sl
INNER JOIN
	categories AS ct
ON
	sl.category_id = ct.id
WHERE ct.slug = 'home-work';


или таким способом

SELECT *
FROM slides
WHERE category_id IN (SELECT id FROM categories WHERE slug = 'home-work');


2ой вариант ближе по-сути к тому что происходит в Ruby коде выше.

можно ли как-ть оптимизировать Ruby код для выборки нужных Slide чтобы он на стороне SQL выполнялся как один запрос а не два отдельных?
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
@Pazzik
Slide.includes(:categories).where(category: { slug: params[:category] })
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы