Sql 如何使用n-n关联rails 4.0请求

Sql 如何使用n-n关联rails 4.0请求,sql,ruby-on-rails,ruby-on-rails-4,Sql,Ruby On Rails,Ruby On Rails 4,我有两个实体:战士,地位,它是一个协会 所以我有另一张表格“战斗机状态” 我如何在rails 4.0中编写sql:“我希望所有没有状态X的战斗机”(其中X是状态id) 我发现: "Fighter.all.where("id NOT IN (SELECT fighter_id FROM fighter_statuses WHERE fighter_statuses.fighter_id = fighters.id AND status_id = #{X})") 但存在更好的方式吗 thx.您使用

我有两个实体:战士,地位,它是一个协会

所以我有另一张表格“战斗机状态”

我如何在rails 4.0中编写sql:“我希望所有没有状态X的战斗机”(其中X是状态id)

我发现:

"Fighter.all.where("id NOT IN (SELECT fighter_id FROM fighter_statuses WHERE fighter_statuses.fighter_id = fighters.id AND status_id = #{X})")
但存在更好的方式吗


thx.

您使用的是Rails 4,因此您可以选择
where.not
,如下所示:

Fighter.joins(:statuses).where.not('fighter_statuses.status_id = ?', X)

这是我尝试的第一种方法,但它使用了“内部联接”,因此不返回结果,如果使用联接方法,我们必须使用左联接,那么如何将内部联接转换为左联接?