Найти записи на основе другого родительского дочернего элемента - PullRequest
0 голосов
/ 05 октября 2018

У меня есть следующие ассоциации:

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

И мне нужен список всех кораблей, которые готовы к выходу в море.Другими словами, мне нужно найти все корабли, у которых есть хотя бы один капитан, хотя бы с одним из его расписаний.

Я думал о слиянии двух внутренних соединений, так как мне нужны корабли с капитанами, у которых есть расписания.Я пробовал Captain.includes(:schedules).where("schedule.id IS NOT NULL") и так с кораблями, но это не работает.Может ли кто-нибудь объяснить мне, что я делаю неправильно и как мне это сделать?

1 Ответ

0 голосов
/ 05 октября 2018

Просто используйте joins, который генерирует INNER JOIN.

Ship.joins(captains: :schedules)
...