我需要在delayed_job
处理任务后更新模型,例如:
foo.delay.something
something
完成后,我需要更新foo对象,实现这个目标的最佳方法是什么?我正在考虑编写Delayed::Backend::ActiveRecord::Job
类的回调编码,但应该有更清洁,更好的做法。
答案 0 :(得分:3)
我会在#foo方法结束时更新它:
def foo
# do work here
update_attribute :processed, true
end
答案 1 :(得分:1)
我不明白为什么你不会把它作为已经作用于对象的工作的一部分。
答案 2 :(得分:0)
根据建议更新记录很好,但它只是解决方案的一部分...
如果我想要更好地控制失败时该怎么做,那么回调会有所帮助..即:Delayed::Job.enqueue InstructionRequestJob.new( p1, p2 )
InstructionRequestJob perform
- perform a task on a remote server
- get a response
- case response
when OK
update attribute ( as suggested)
else
# how many attempts ?
if too_many_attempts
update attribute
destroy the job
else
reschedule the job for another attempt
- end