Как оптимизировать вызовы update_all

#ruby-on-rails #activerecord #update-all

#ruby-на-рельсах #активная запись #обновление-все

Вопрос:

В настоящее время я выполняю update_all конкатенацию with следующим образом:

 collection.update_all(flag: false)
collection.update_all(["description = CONCAT(description, ?)", 'not_available'])
 

Возможно ли сделать это сразу?

Очевидно, что эта конструкция не работает:

 collection.udpate_all(flag: false, ["description = CONCAT(description, ?)", 'not_available'])
 

Ответ №1:

update_all может принимать массив, поэтому вы должны быть в состоянии сделать что-то вроде этого:

 collection.udpate_all([
  "description = CONCAT(description, ?)", flag = ?,
  'not_available',
  false
])
 

Комментарии:

1. По какой-то причине две переменные привязки не работают. Я придумал такое решение collection.update_all(['desc = CONCAT(desc, ?), flag = FALSE', 'not_available'])