这可能是一个简单的问题,但我似乎在竭尽全力寻找一个优雅的解决方案.我有两个ActiveRecord模型类,其中一个是has_one,属于它们之间的关联:
class Item < ActiveRecord::Base
has_one :purchase
end
class Purchase < ActiveRecord::Base
belongs_to :item
end
我正在寻找一种优雅的方法来查找所有物品对象,这些物品没有与之关联的购买对象,理想情况下,不必在物品上使用布尔值is_purchased
或类似属性.
现在我有:
purchases = Purchase.all
Item.where('id not in (?)', purchases.map(&:item_id))
这是可行的,但在我看来效率很低,因为它需要执行两个查询(而且购买可能是一个巨大的记录集).
Running Rails 3.1.0