2016-03-03 59 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

相關問題