Ruby on rails 3 ActiveRecord-列出所有父项没有一个特定子项

Ruby on rails 3 ActiveRecord-列出所有父项没有一个特定子项,ruby-on-rails-3,activerecord,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 class-Badge

我在用户和徽章之间有一种多对多的关系

class Badge < ActiveRecord::Base
    has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
    has_and_belongs_to_many :badges
end
class-Badge
一个用户可以有许多徽章

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


我有很多用户和徽章。

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

class Badge < ActiveRecord::Base
    has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
    has_and_belongs_to_many :badges
end
User.where('id NOT IN (SELECT user_id FROM badges_users WHERE badges_users.badge_id = ?)', badge.id ) 

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

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

是的,我知道我不想在我选择的用户中找到的徽章id。我不再是那个noob;)是的,我知道我不想在我选择的用户中找到的徽章id。我不再是那个noob;)很简单,我试图用left join之类的方法解决这个问题,但是我可以简单地访问关系表。谢谢很简单,我试图用left join之类的方法解决这个问题,但是我可以简单地访问关系表。谢谢