У меня есть повторяющееся отложенное задание, которое отправляет электронное письмо с подтверждением и помечает заказ как выполненный, чтобы при следующем запуске отложенного задания заказ не обрабатывался повторно.
Иногда (кажется, когда определенная строка связана с полем промокода, но это может быть просто совпадением), задание обрабатывает и отправляет электронное письмо, но не сохраняет запись и помечает ее как завершенную. Я использовал IRB, чтобы установить запись на то, что код будет, и проверил, что запись действительна.
Есть идеи, почему это может происходить или кто-нибудь видел это?
class PaymentEmailAndLock < Struct.new(:blank)
include Delayed::RecurringJob
run_at '8:00pm'
run_every 1.day
timezone 'US/Eastern'
queue 'dailyjobs'
def perform
time_set = 30.hours.ago..2.hours.ago
@mail_and_lock = Cart.where(updated_at:time_set,payment_sent:true,complete_order_lock:false)
@mail_and_lock.each do |obj|
obj.complete_order_lock = true
obj.survey_available = true
obj.save
if obj.payment == 1
MessageMailer.delay(queue: 'mailers').message_payment_paper(obj.cust_email,obj)
else
MessageMailer.delay(queue: 'mailers').message_payment_digital(obj.cust_email,obj)
end
end
end
end