В Rails3 update_all не возвращает никакой значимой информации, кроме количества обновленных записей (это может зависеть от того, вернет ли ваша СУБД эту информацию).
http://ar.rubyonrails.org/classes/ActiveRecord/Base.html#M000343
Он НЕ создает экземпляры каких-либо объектов, вы можете убедиться в этом, посмотрев журнал.
Если у меня в базе данных есть ID пользователя 4 и 5 (и ничего другого), вот что я получу:
irb(main):007:0> u = User.update_all( "id = id", :id => 5 )
=> 1
irb(main):008:0> u = User.update_all( "id = id", :id => 55 )
=> 0
irb(main):009:0> u = User.update_all( "id = id", :id => [4,5] )
=> 2
irb(main):010:0> u = User.update_all( "id = id", :id => [4,53] )
=> 1
irb(main):011:0> u.class
=> Fixnum
Если вы хотите получить записи, которые были изменены, вы должны использовать «update», передать список значений ID, и тогда вы получите экземпляры объектов.
Обратите внимание, что если у вас много идентификаторов, вы можете легко переполнить память вашего сервера, создав слишком много объектов.
Другой способ, о котором я мог подумать, - это сначала выполнить запрос объектов, которые будут обновлены (использовать группировку объектов и выбирать только те атрибуты из таблицы, которые вам нужно отобразить, тем самым экономя память), сгенерировать отчет, затем выполните запрос Update_All ...