2つのモデル、HABTM関連のクライアントとアイテムがあります。私は、いくつか(複数)のアイテム(または特定の数のアイテム)を持つすべてのクライアントを選択する最速の方法を見つけたいと思います。2つのHABTMモデル(Rails3)のクエリ
required_item_ids = Item.where(:kind => :book).collect(&:id)
Client.join(:items).where(:items => {:id => required_item_ids})
をしかし、必要な必要な項目のいくつかまたはすべてを持つクライアントのリストです:
class Client < ActiveRecord::Base
has_and_belongs_to_many :items
end
class Item < ActiveRecord::Base
has_and_belongs_to_many :clients
end
以下のクエリは、リストからいずれかのアイテムを持っているクライアントは、フェッチ。
私はRailsの初心者ですから、これは簡単な質問だと思いますが、私はここや他の場所で同様の質問をすべて見て答えを見つけられませんでした。
私はARで直接行うことはできないと思います。独自のSQLを記述する必要があるでしょう(各クライアントに対して、すべてのアイテムを選択し、選択項目にrequired_itemが含まれているかどうかを確認してください;そうなら、クライアントを返します)。 – alste