根据其他父母孩子查找记录

时间:2018-10-05 17:45:30

标签: ruby-on-rails postgresql rails-activerecord

我有这样的关联:

class Ship < ApplicationRecord
 has_many :captain_profiles
 has_many :captains, through: :captain_profiles
end

class CaptainProfile < ApplicationRecord
  belongs_to :captain
  belongs_to :ship
end

class Captain < ApplicationRecord 
  has_one :captain_profile
  has_many :schedules
end

class Schedule < ApplicationRecord
  belongs_to :captain
end

我需要准备好要出海的所有船只清单。换句话说,我必须找到所有至少有一名船长且船长至少有一张的船。

我考虑过合并两个内部联接,因为我需要具有船长和时间表的Ships。 我尝试了Captain.includes(:schedules).where("schedule.id IS NOT NULL"),但在Ships上也尝试过,但是它不起作用。有人可以解释一下我在做什么错,我该怎么做?

1 个答案:

答案 0 :(得分:1)

只需使用joins即可生成INNER JOIN

Ship.joins(captains: :schedules)