Внутренняя система отслеживания ActiveRecord должна обновлять только те поля, которые были изменены с момента последнего сохранения, поэтому если вы обновите поле A и поле фоновых обновлений задания B, тогда не должно быть конфликтов.
У вас есть проблемыкогда вы используете счетчики, хотя.Если у вас есть счетчик C, который был кэширован как 10, но на самом деле 12 после фонового задания, и вы хотите добавить еще один, вы сохраните 11, а не 13. Именно поэтому вам никогда не следует назначать счетчики, а вместо этого выполнятьвместо них используется дифференциальная регулировка.
Это неправильный путь:
UPDATE things SET foo_count=11;
Это правильный путь:
UPDATE things SET foo_count=foo_count+1;
Вы можете сделать это, используя increment метод ActiveRecord.
Единственное исключение, которое вы получите, если вы используете блокировку версий ActiveRecord, но это, кажется, больше проблем, чем стоит.