2012-06-04 71 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