ActiveRecord Update_all до значения переменной

Я ищу способ обновить все записи с определенным условием их cur_val + 100:

У меня есть таблица предложений с полями идентификатора и оценки, и я хочу, чтобы все записи с определенными идентификаторами получали увеличение оценки, например:

Suggestion.where(id: ids_list).update_all(score: score+100)

Как я могу это сделать?

1 ответ

Решение

Попробуй просто SQL, прочитать о update_all:

Suggestion.where(id: ids_list).update_all('score = score + 100')

Но помни update_all не вызвать Active Record обратные вызовы или проверки.

Несколько советов:

Вы можете сделать это в Ruby но это очень плохо

Suggestion.where(id: ids_list).find_each do |x|
  x.update(score: x.score + 100)
end

Такие вещи должны происходить в базе данных.

Другие вопросы по тегам