2

У меня есть следующий запрос в моей Gallery модели:Использование включает в себя с несколькими ассоциациями и отдельными условиями

media_items.includes(:photo, :video).rank(:position_in_gallery) 

Мой Gallery Модель has_many Media Items каждый из которых имеет либо Photo или Video ассоциации.

Пока это отлично работает. Он возвращает все media_items, включая их ассоциацию photo или video, заказанную атрибутом position_in_gallerymedia_item.

Однако у меня теперь есть требование ограничить фотографии, возвращенные этим запросом, только те, у которых есть атрибут is_processing, который равен nil.

Можно ли сделать этот же запрос, но с условием на фотографиях вернулся эквивалент:

.where(photo: 'photo.is_processing IS NULL') 

Обратите внимание, что все видео должно быть возвращено независимо и не включает атрибут is_processing.

Я попытался @ предложение mudasbwa в:

includes(:photo, :video).where('photos.is_processing IS NULL').rank(:position_in_gallery) 

но это заставляет меня:

ERROR: missing FROM-clause entry for table "photos"

+0

'.гд ('photos.is_processing IS NULL')' – mudasobwa

+0

@mudasobwa Спасибо. – Undistraction

+0

@mudasobwa Я все еще хочу включить видео в запрос. – Undistraction

ответ

5

Оказывается, я был на правильном пути. Мне нужно использовать references():

media_items.includes(:photo, :video).where('photos.is_processing IS NULL').references(:photo).rank(:position_in_gallery) 
+0

прохладный. это идеально. пальцы вверх. –