选择没有多对多关系的行

时间:2013-11-27 11:54:10

标签: ruby-on-rails

在我的Rails 4应用程序中,我有两个模型:

ChallengeListChallenge

Challenges有很多ChallengeList,反之亦然(多对多)。

我想创建一个范围,以便选择那些与特定ChallengeList id无关的挑战。但是我无法让它发挥作用!

我尝试过以下方法

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

但是,这不会选择与任何挑战列表无关的项目,只会选择那些 ,并且没有该特定ID的项目。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

听起来你需要左连接。如果是这样,请尝试以下方法:

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