Поиск записей с нулевыми вложенными записями has_many - PullRequest
0 голосов
/ 12 ноября 2018

Я наткнулся на этот пост , который соответствует тому, что я хочу сделать.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...