使用包含多个关联和单独条件

Und*_*ion 5 ruby activerecord ruby-on-rails active-record-query ruby-on-rails-4

我的Gallery模型中有以下查询:

media_items.includes(:photo, :video).rank(:position_in_gallery)
Run Code Online (Sandbox Code Playgroud)

我的Gallery模型has_many Media Items,每个都有一个Photo或一个Video关联.

到目前为止这个工作正常.它返回media_items包含它们 photovideo关联的所有内容,按position_in_gallery属性排序media_item.

但是我现在有一个要求限制了该查询返回到只有那些具有的属性的照片is_processing即是nil.

是否可以进行相同的查询,但返回的照片条件相当于:

.where(photo: 'photo.is_processing IS NULL')
Run Code Online (Sandbox Code Playgroud)

请注意,无论是否包含is_processing属性,都应返回所有视频.

我试过@ mudasbwa的建议:

includes(:photo, :video).where('photos.is_processing IS NULL').rank(:position_in_gallery)
Run Code Online (Sandbox Code Playgroud)

但它让我:

错误:表"照片"缺少FROM子句条目

Und*_*ion 10

结果我走在正确的轨道上.我需要使用references():

media_items.includes(:photo, :video).where('photos.is_processing IS NULL').references(:photo).rank(:position_in_gallery)
Run Code Online (Sandbox Code Playgroud)