我有3个模型:Collection
,Product
和Gallery
。并非每个产品都有画廊。我怎么找到那些?
这就是我的意思:
Collection.find_each do |collection|
collection.products.each do |product|
next if collection.products.empty?
puts "Product #{product.id} does not have gallery" unless product.galleries.present?
end
end
这是一种糟糕的方式,因为它会发送大量查询。我该如何改进?
UPD。
class Collection
has_many :products
end
class Product
belongs_to :collection
has_many :galleries
end
class Gallery
belongs_to :product
end
答案 0 :(得分:1)
要在一个查询中获取“所有没有画廊的产品”,您可以使用此行代码
Product.includes(:galleries).where(galleries: {id: nil})