2011-01-22 119 views
1

在帶有ActiveRecord的Rails 3中,我有2個模型(用戶和任務)。這些模型通過has_many鏈接在一起:通過關聯另一個模型Assignments。我如何查找與特定用戶無關的所有任務?查找所有記錄不是在多對多的關聯中

class User < ActiveRecord::Base 
    has_many :assignments 
    has_many :tasks, :through => :assignments 
end 

class Tasks < ActiveRecord::Base 
    has_many :assignments 
    has_many :users, :through => :assignments 
end 

class Assignments < ActiveRecord::Base 
    belongs_to :users 
    belongs_to :tasks 
end 
+1

您確實在尋找SQL答案嗎?如果沒有,也許你可以考慮刪除該標籤。否則,我可以給你SQL來做到這一點。 – ErikE 2011-01-22 17:51:10

+0

借調emtucifor的評論。 SQL是微不足道的。你想要SQL嗎? – 2011-01-22 17:57:43

回答

4

短「東經甜:

Task.all - user.tasks 

避免加載用戶任務:

Task.where('id not in (?)', user.task_ids) 

我無法弄清楚如何與外辦呢加入AR。

3

我會假設你想那些任務沒有任何關聯的用戶,而不是沒有關聯到特定的用戶。

Tasks.joins('left outer join assignments on assignments.task_id = tasks.id').where('assignments.* is null') 
相關問題