ActiveRecord - 列出所有 parents 没有一个特定的 child

ActiveRecord - List all parents DO NOT have one specific child

我在用户和徽章之间有 many-to-many 关系。

class Badge < ActiveRecord::Base
    has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
    has_and_belongs_to_many :badges
end

一个用户可以拥有多个徽章。

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

我有很多用户和徽章。

您可以 select user_id 不在加入 table 具有该徽章 ID 的记录中的所有用户。

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