我有两个模型名album
和albumphoto
:
class Album < ActiveRecord::Base
has_many :albumphotos, dependent: :destroy
end
class Albumphoto < ActiveRecord::Base
has_many :album, dependent: :destroy
end
现在我需要获取其中没有Albums
的{{1}}个数。我怎么能这样做?
答案 0 :(得分:2)
您的架构错误,因为它不能是双向has_many
。如果照片只能属于一个相册或其他关系,例如has_many
或belongs_to
,如果一张照片属于不同的相册,则应使用has_many :through
和has_and_belongs_to_many
。对于belongs_to
,您可以使用LEFT JOIN
:
Album.joins('LEFT JOIN albumphotos ON albumphotos.album_id = albums.id').
where('albumphotos.id' => nil)
对于has_many :through
和has_and_belongs_to_many
,它几乎是相同的,但它会像albums_to_photos
一样成为第三个表。
答案 1 :(得分:0)
假设您的相册表中有albumphoto_id,并且如果您的相册中没有任何相册,则表示相册表中的albumphotos_id = nil,则可以执行此操作
Album.where(albumphotos_id: nil).count