Я нашел решение, определив метод condition_for_collection в контроллере. Это что-то вроде взлома, но это просто (3 строки) и работает:
def conditions_for_collection
params[:action]=="update_table" ? "" : "1=2"
end
Вот как это происходит: когда вы запрашиваете список, вызывается метод контроллера list , который обрабатывается ActiveScaffold. ActiveScaffold вызывает condition_for_collection , и, поскольку действие list (не update_table ), приведенный выше метод condition_for_collection возвращает «1 = 2», что, конечно, приводит к пустой список.
Пользователь может нажать на кнопку «Поиск» и запустить поиск. Это вызывает действие update_table , снова ActiveScaffold вызывает condition_for_collection , которое на этот раз возвращает "" (без фильтра), поэтому выполняется поиск по всему списку.
Это не очень красиво, но оно делает свою работу.