2

Ich habe die folgende Abfrage in meinem Gallery Modell:umfasst die Verwendung mit mehreren Verbänden und separaten Bedingungen

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

Mein Gallery Modell has_many Media Items, die jeweils entweder einen Photo oder Video Verein haben.

Bis jetzt funktioniert das gut. Es gibt alle media_items einschließlich ihrer photo oder video Zuordnung zurück, geordnet nach dem position_in_gallery Attribut der media_item.

Allerdings habe ich jetzt eine Anforderung, die von dieser Abfrage zurückgegebenen Fotos auf nur diejenigen mit einem Attribut von is_processing zu beschränken, das nil ist.

Ist es möglich, dieselbe Abfrage zu machen, aber mit einer Bedingung auf die Fotos zurück entspricht:

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

Beachten Sie, dass alle Videos, unabhängig zurückgegeben werden sollen und keine is_processing Attribut enthalten.

Ich habe versucht, @ mudasbwa Vorschlag:

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

aber es wird mich:

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

+0

'.wo ('photos.is_processing IS NULL')' – mudasobwa

+0

@mudasobwa Danke. – Undistraction

+0

@mudasobwa Ich bin immer noch auf der Suche nach Videos in der Abfrage. – Undistraction

Antwort

5

Es stellte sich heraus, dass ich auf dem richtigen Weg war. Ich brauchte references() zu verwenden:

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

cool. das ist perfekt. Daumen hoch. –