我有2个表,:photos
,:albums
,以及名为:photo_listings
的2个匹配表。
我只想显示里面有照片的相册,所以,我在相册模型中创建了一个范围:
scope :with_photos, -> {includes(:photos)}
问题是:photos
不是:albums
的直接列,因为照片和相册是
通过:photo_listings
匹配。那么,我如何为仅列出已分配照片的专辑的专辑制作范围?
Photo_listings模型
class PhotoListing < ActiveRecord::Base
belongs_to :album
belongs_to :photo
end
相册模型
class Album < ActiveRecord::Base
has_many :photo_listings
end
照片模型
has_many :photo_listings
has_many :albums, :through => :photo_listings
end
答案 0 :(得分:0)
您可以将其添加到Album
class Album < ActiveRecord::Base
has_many :photo_listings
has_many :photos, through: :photo_listings # this line
end
然后你的范围应该有效。您错过了photos
模型上的Album
关系。