Я обрабатываю данные партиями. Итак, я хотел, чтобы конечный пользователь знал, сколько данных обрабатывается. Поэтому я обновил сообщение, как показано ниже, и получал его из внешнего интерфейса каждые 5 секунд. Проблема в том, что оно не отражает изменения в сообщении, если только не завершена вся транзакция, которая действительно является окончательным сообщением, скажем, «5000 из 5000».
Вот что я сделал:
ActiveRecord::Base.transaction do
# the stuff i actually want to do in the transaction
job.update!(message: "Processed (#{ i } of #{ total })")
end
Теперь я знаю, что это может быть немного глупо, но есть ли способ заставить сообщение отражаться в базе данных независимо от результата транзакции. Я справился с этим позже.
Спасибо.