También puede realizar una transacción. Al igual que el ejemplo a continuación:
transaction do
thing = Thing.find(1)
puts thing.foo # outputs "old value"
thing.foo = "new value"
thing.save
end
ThingProcessor.queue_job(thing.id)
Actualización:hay una gema que llama After Transaction, con esto puedes resolver tu problema. Aquí está el enlace:http://xtargets.com/2012/03/08/comprender-y-resolver-las-condiciones-de-carrera-con-ruby-rails-and-background-workers/