У меня проблема с попыткой работать с запросом NOT IN (с использованием Rails 4/Postgres, для справки) элегантным способом. Я пытаюсь получить список всех объектов определенной модели, которые не отображаются в таблице соединений для определенного экземпляра. Он работает, когда вы пытаетесь выполнить запрос NOT IN с пустым массивом, он выдает ошибку, потому что вы не можете искать NOT IN NULL..where.not с пустым массивом
Код ниже работает, но есть ли лучший способ, чем использовать непреднамеренное условие для создания псевдо-нулевого объекта?
def characters_selected
self.characters_tagged.pluck(:name)
end
def remaining_characters
characters = self.characters_selected
characters = ["SQL breaks if this is null"] if characters.empty?
# this query breaks on characters_selected == [] without the above line
Character.where("name NOT IN (?)", characters)
end