Мне кажется, что я упускаю что-то очевидное здесь, так что, надеюсь, кто-то может мне помочь.
Допустим, у меня есть 3 модели: Здания, Полки и Книги.
Проблема, которую я пытаюсь решить, состоит в том, чтобы удалить все полки, у которых нет книг, из определенной группы зданий..
Базовая структура будет выглядеть следующим образом:
class Building
has_many :shelves
end
class Shelf
has_many :books
belongs_to :building
end
class Book
belongs_to :shelf
end
Мне не нужно, чтобы это было чрезвычайно эффективно, но я хочу, чтобы это не было ужасно неэффективным.В частности, если у меня есть здание, пустые полки которого необходимо удалить, я пытаюсь найти пустые полки:
Shelf.joins(:books).where("books.id is NULL").where(:building_id => building_id)<other_conditions...>
Однако этот запрос недавая мне результаты, которые я ожидаю (это не возвращает никаких полок, когда я знаю, что некоторые пусты).Я надеялся, что объединение заполнит NULL для столбца books.id для полки без книг, но, похоже, я ошибаюсь.
Есть ли другой способ сделать это, или я упускаю что-то простое?Спасибо за помощь!