2012-06-04 70 views
0

我有兩種模式UserServiceUser has_and_belongs_to_many Services同樣適用於Services查詢有關has_many模型的rails 3

class User < ActiveRecord::Base 
    has_and_belongs_to_many :services 
end 

class Service < ActiveRecord::Base 
    has_and_belongs_to_many :users 
end 

我需要找到誰提供特定服務的所有用戶。喜歡的東西:

@users = User.where(:services_ids => [2,3,4])

+0

你創建的連接表? –

+0

@Zambon是的,我有一個連接表 –

回答

0

試試這個:

@users = Service.where(:id => [2,3,4])).map{|svc| svc.users}.uniq.flatten 

@users = User.all(:include => :services, :conditions => ["services.id in ?", (2,3,4)]) 
+0

嘿,感謝您的快速回復,它會拋出一個錯誤:未定義的本地變量或方法'用戶' –

+0

請包括您的模型的問題。 – Anil

1

這應該工作:

User.join(:services).where(:services.id => [2,3,4]).uniq 
+0

如果用戶有服務2和3,這將創建一個重複的用戶。 –

+0

您可以將'.uniq'附加到該用戶。 –

+0

謝謝@Zambon :) – Salil