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

时间:2017-01-13 17:06:25

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord active-record-query

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

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

我的Gallery模型has_many Media Items,每个模型都有PhotoVideo关联。

到目前为止这个工作正常。它返回包括它们在内的所有media_items photovideo关联,按position_in_gallery的{​​{1}}属性排序。

但是,我现在要求将此查询返回的照片限制为仅media_item属性为is_processing的照片。

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

nil

请注意,所有视频均应退回,且不包含.where(photo: 'photo.is_processing IS NULL') 属性。

我试过@ mudasbwa的建议:

is_processing

但它让我:

  

错误:缺少表格“照片”的FROM子句条目

2 个答案:

答案 0 :(得分:7)

原来我走在正确的轨道上。我需要使用references()

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

答案 1 :(得分:0)

media_items.includes(:photo, :video).where(photos: { is_processing: nil }).rank(:position_in_gallery)