У меня есть область Rails 3, которая исключает массив идентификаторов.
Каков наилучший способ записать область видимости, чтобы она ничего не делала, когда массив пуст и все еще цепочки? В настоящее время у меня есть это, которое работает, но кажется немного обманчивым:
scope :excluding_ids,
lambda {|ids| ids.empty? ? relation : where('id not in (?)', ids) }
Если у меня нет бита "отношение ids.empty??:", Когда идентификатор пуст, генерируется SQL
... ID not in (NULL) ...
, который всегда ничего не вернет. Так что-то вроде:
Model.excluding_ids([]).where('id > 0')
не возвращает результатов.