多对多不同的查询

时间:2012-09-30 19:38:30

标签: ruby-on-rails ruby-on-rails-3

我有以下情况:我有两个模型:UserGroup和User(具有多对多关系)。我需要最终得到一个独特的用户列表。

我拥有的:一组用户组ID,以及一组用户ID。

我想要的:一组不同的用户列表,基于我的内容。

Relation case http://i47.tinypic.com/261yo2o.png

插图有点误导,因为它只显示我有UserGroup ID,但我也有一些用户ID。

如何在Ruby on Rails中以优雅的方式完成这项工作?

感谢。

1 个答案:

答案 0 :(得分:2)

希望它可以帮到你

user_groups = UserGroup.includes(:users).where('query for your selected user_groups records')
distinct_users = user_groups.collect{|ug|ug.users.collect(&:id)}.flatten.uniq

使用此功能,您只能为所选的user_groups

获取不同的用户