2013-11-27 122 views
0

在我的Rails 4的應用程序,我有兩個型號:選擇行不存在多對一對多的關係

ChallengeListChallenge

Challenges有許多ChallengeList,反之亦然(許多到多)。

我想創建一個範圍,以便它選擇那些與特定的ChallengeList ID無關的挑戰。但我不能讓它工作!

我嘗試以下方法

joins(:challenge_lists).where("challenge_lists.id != ?", id) 

但這並不選擇哪個不與任何挑戰列表相關的項目,只有那些,並沒有特定的ID。

我該如何解決這個問題?

回答

2

這聽起來像你需要一個左加入。如果是這樣,請嘗試以下操作:

joins(
    'left join challenge_lists on challenges.id = challenge_lists.challenge_id' 
).where(
    'challenge_lists.id != ?', id 
) 
+0

另外:'OR challenge_lists.id IS NULL' – Maarten