У меня есть работник, который создает запись в ActiveRecord, используя следующий синтаксис:
unique_id = SecureRandom.hex(32)
user = User.find(10)
user.tasks.build(tk: unique_id, completed: false).save
Однако, далее, у меня есть оператор, который должен отслеживать запись, чтобы увидеть, если что-то меняется, с следующее:
while !Task.find_by(tk: unique_id, completed: false).nil?
sleep 5
end
Эта запись управляется фоновым работником и в конечном итоге помечает completed
как true
.
Однако это никогда не заканчивается, поскольку кажется, что completed
атрибут всегда ложь, даже если я go в базу данных, чтобы увидеть, что это не так. Это как бы какой-то тип кеширования. Как видно на рисунке ниже, первая команда показывает, что идентификатор записи 19
имеет атрибут completed
, равный true
; однако второй (который используется в работнике) показывает, что это не так.
Как отключить кэширование в моих работниках, чтобы он всегда извлекает самую свежую информацию из базы данных?