これは簡単な質問かもしれませんが、私はここでエレガントな解決策を見つけるために髪を引っ張っているようです。2つのActiveRecordモデルクラスがあり、それらの間にhas_oneとbelongs_toの関連付けがあります。
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))
これは機能しますが、2つのクエリを実行しているため、私には非効率に思えます(そして、購入は膨大なレコードセットになる可能性があります)。
ランニングレール3.1.0