我有兩個模型,客戶和具有HABTM關聯的項目。我想找到最快的方法來選擇所有的客戶,其中有幾個(多個)項目(或一定數量的項目)。查詢兩個HABTM模型(Rails3)
class Client < ActiveRecord::Base
has_and_belongs_to_many :items
end
class Item < ActiveRecord::Base
has_and_belongs_to_many :clients
end
下面的查詢獲取客戶,其中有任何一個項目從列表:
required_item_ids = Item.where(:kind => :book).collect(&:id)
Client.join(:items).where(:items => {:id => required_item_ids})
但需要的是具有所需物品的幾個或全部的客戶名單。
我相信這是一個簡單的問題,因爲我是Rails的新手,但是我在這裏和其他一些地方查看了所有類似的問題,但沒有找到答案。
我不認爲你可以直接與AR做到這一點。您可能需要編寫自己的SQL(對於每個客戶端,選擇所有項目,然後檢查所選項目中是否包含required_items;如果是,則返回客戶端) – alste