这可能是一个简单的问题,但我似乎正在拔头发来在这里找到一个优雅的解决方案。我有两个 ActiveRecord 模型类,它们之间有一个 has_one 和 belongs_to 关联:
class Item < ActiveRecord::Base
has_one :purchase
end
class Purchase < ActiveRecord::Base
belongs_to :item
end
我正在寻找一种优雅的方式来查找所有没有与之关联的购买对象的 Item 对象,最好不要is_purchased
在 Item 上使用布尔值或类似属性。
现在我有:
purchases = Purchase.all
Item.where('id not in (?)', purchases.map(&:item_id))
哪个有效,但对我来说似乎效率低下,因为它正在执行两个查询(并且购买可能是一个巨大的记录集)。
运行 Rails 3.1.0