查询一张照片被收录到相册的次数

Making a query of how many times a photo has been included to an album

我坚持这个。我有 2 个模型,photoalbum。 这是一个多对多的关系,中间 table 称为 photo_listings,它有 photo_idalbum_id

问题是,我想在我的观点中有一个计数器,关于 一张照片被添加到相册(所有相册,而不是特定相册)的次数。

为此,我想我需要创建一个 method/scope album_count,这样我就可以 photo.album_count 在我看来。

在该方法中,我正在做:

def album_count
   Photo_listing.includes(:photo_id).count
end

我不知道如何生成该查询。我阅读了 Active Record 文档,但也找不到。有任何想法吗?提前致谢。

如果photoalbum是多对多的关系,那么就意味着从album你可以使用

photo.albums

访问关系。因此

def albums_count
  photo.albums.count
end

你不需要引用中间体 table/model,除非你必须这样做。

如果你想统计一张照片被添加到相册的所有次数,那么(假设你使用了has_many :through

class Photo
  def total_albums_count
    PhotoListing.where(photo_id: id).count
  end    
end