Обновление всех записей в одной транзакции

#mysql #ruby-on-rails #sql-update

#mysql #ruby-on-rails #sql-обновление

Вопрос:

Прямо сейчас я использую методы Rails AR для обновления множества атрибутов в таблице.

 RaceWeek.current_week.each { |r| r.update_attributes(:games_won => 0, :games_lost => 0) }
  

Я бы предпочел сделать это более эффективно за одну транзакцию. Как это можно сделать?

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

1. current_week — это named_scope, который возвращает все записи за неделю гонки, относящиеся к указанному периоду времени.

Ответ №1:

Используйте update_all :

 <model/association>.update_all("games_won = 0, games_lost = 0" )
  

Ps. Используйте какую-либо форму из приведенных выше, потому что я не знаю, каково отношение RaceWeek к current_week .

Также смотрите некоторые примеры