我有一个模型库has_many:images,as :: imageable,dependent :: destroy和图像模型belongs_to:imageable,polymorphic:true。这里使用单表继承。现在我想获取并隐藏没有与之关联的图像的库。怎么去呢?
答案 0 :(得分:0)
试试这个
Gallery.all.each do |gallery|
galleries << gallery if (gallery.images.empty?)
end
答案 1 :(得分:0)
如果您只想最有效地获取具有空关联的所有图库,则可以使用此范围:
# in Gallery.rb
scope :no_images, -> {
joins('LEFT OUTER JOIN images ON images.imageable_id = galleries.id).
group('galleries.id').
having('count(imageable_id) = 0') }
运行Gallery.no_images
将返回没有关联图像的所有Gallery
个对象。
请注意,有关使用单表继承的多态关联的文档有以下说法:
将多态关联与单个表结合使用 继承(STI)有点棘手。为了协会 按预期工作,确保存储STI的基本模型 多态关联的类型列中的模型。接着说 使用上面的资产示例,假设有客户帖子和成员 使用帖子表进行STI的帖子。在这种情况下,必须有一个 在posts表中输入列。
因此,请确保您已将type
列正确设置为正确的值(在您的情况下为“图像”)。