Если у меня есть область видимости с лямбдой и она принимает аргумент, в зависимости от значения аргумента, я могу знать, что совпадений не будет, но я все равно хочу вернуть отношение, а не пустой массив:
scope :for_users, lambda { |users| users.any? ? where("user_id IN (?)", users.map(&:id).join(',')) : [] }
Что мне действительно нужно, так это метод "none", противоположный "all", который возвращает отношение, которое все еще можно связать, но приводит к короткому замыканию запроса.