Как обновить все, когда вам нужно запустить обратные вызовы?

Допустим, у меня есть 15 идентификаторов пользователей в массиве с именем user_ids .

Если я хочу, скажем, изменить все их имена на «Боб». Я мог бы сделать:

users = User.find(user_ids)
users.update_all( :name => 'Bob' )

Однако это не вызывает обратных вызовов. Если мне нужно инициировать обратные вызовы при сохранении этих записей, то, насколько мне известно, единственный способ - использовать:

users = User.find(user_ids)
users.each do |u|
  u.name = 'Bob'
  u.save
end

Однако это потенциально означает очень долгую задачу в действии контроллера.

Итак, мой вопрос, есть ли любой другой лучший / более производительный / более удобный способ инициировать пакетное обновление набора записей, который вызывает обратные вызовы для записей?

42
задан tshepang 15 June 2014 в 11:54
поделиться