ActiveRecord - 列出所有父母没有一个特定的孩子

时间:2016-03-03 20:06:19

标签: ruby-on-rails-3 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的用户?

我有很多用户和徽章。

1 个答案:

答案 0 :(得分:0)

您可以选择user_id不在具有该徽章ID的联接表记录中的所有用户。

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