Я не могу проверить прямо сейчас, так как у меня нет приложения с Rails 2.3, работающего на моей машине, но как насчет пустого массива?Я думаю, что AR проверяет, является ли то, что вы предоставляете, коллекцией (массивом), и если да, то генерирует часть «IN (...)», а затем генерирует записи для предложения «IN» с правильным экранированием.
EDIT :
Пустой массив генерирует (NULL)
, поэтому он действителен.Массив с пустым массивом генерирует сериализованный YAML, так что это не тот случай.
Я зарегистрировал исходный код , и возможно создать пустую часть "IN ()", вам просто нужно:
укажите параметр, который является одним из следующих: Array
, ActiveRecord::Associations::AssociationCollection
, ActiveRecord::NamedScope::Scope
, строка 2031
он должен #respond_to?(:map)
, но не должен #acts_like?(:string)
, строка 2424
его #empty?
должен возвращать false по какой-то причине или не должен respond_to?(:empty?)
, строка 2425
должна отвечать на #map
, но должна возвращать пустой массив, строка 2428
А потом он генерирует то, что у вас есть.
Я понятия не имею, как это может произойти в реальном коде.Может быть, есть другие способы создать это дело в реальном коде ...