2016-03-03 60 views
1

我有用户和徽章之间的多对多关系。ActiveRecord - 列出所有的父母没有一个特定的孩子

class Badge < ActiveRecord::Base 
    has_and_belongs_to_many :users 
end 

class User < ActiveRecord::Base 
    has_and_belongs_to_many :badges 
end 

用户可以有许多徽章。

如何有效地列出所有没有使用ActiveRecord的特定徽章ID的用户?

我有很多用户和徽章。

+0

是的,我知道徽章ID,我不想在我选择的用户中找到。 – Jeremy

+1

我不是那个noob了:) – Jeremy

回答

0

您可以选择所有user_id不在连接表记录中的那个用户标识符。

User.where('id NOT IN (SELECT user_id FROM badges_users WHERE badges_users.badge_id = ?)', badge.id) 
+0

简单,我试图用左连接等解决这个问题,但我可以简单地访问关系表。谢谢! – Jeremy

相关问题