Я наткнулся на этот пост , который соответствует тому, что я хочу сделать.
Person.left_outer_joins(:contacts).where( contacts: { id: nil } )
Единственное отличие - мне нужно идти на один уровень глубже.Моя установка Restaurant
имеет много Dishes
, и эти блюда, в свою очередь, имеют ассоциацию HMT с разделами.Я просто хочу найти блюда, которые не имеют связанных разделов.Я пытался сделать что-то вроде:
Restaurant.left_outer_joins(:dishes).where(dishes: { section_ids: nil })
Но получить эту ошибку:
ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column dishes.section_ids does not exist)
LINE 1: ...ishes"."restaurant_id" = "restaurants"."id" WHERE "dishes"."...
^
: SELECT "restaurants".* FROM "restaurants" LEFT OUTER JOIN "dishes" ON "dishes"."restaurant_id" = "restaurants"."id" WHERE "dishes"."section_ids" IS NULL LIMIT $1
class Restaurant < ApplicationRecord
has_many :dishes, dependent: :destroy
end
class Dish < ApplicationRecord
has_many :dish_sections, dependent: :destroy
has_many :sections, through: :dish_sections
belongs_to :restaurant
end
class Section < ApplicationRecord
has_many :dish_sections, dependent: :destroy
has_many :dishes, through: :dish_sections
end
class DishSection < ApplicationRecord
belongs_to :dish
belongs_to :section
end