2015-04-13 7 views
6

Rails 4.2, active_jobs, callback_methodsCome ottenere gli attributi del lavoro nei metodi di callback ActiveJob?

Nel metodo di esecuzione di un processo personalizzato, ho creato un nuovo record (e caricato un file su S3). Come posso passare o ottenere l'ID di nuovi record nel callback after_perform? Voglio inviare un'e-mail after_perform con un collegamento al documento S3 ... ma non sono sicuro di come ottenere l'id nel metodo after_perform. Secondo i documenti puoi usare job.attributes, ma ottengo 'attributi di metodo non definiti'.

Posso spostare la chiamata del mittente nel metodo di esecuzione, ma Id piuttosto gestirlo correttamente utilizzando i callback. Non sono sicuro di come accedere agli attributi (o dove questi attributi hanno origine) al di fuori del metodo di esecuzione.

ho provato a fare un po 'di lavoro investigativo (per determinare quali attributi sono stati a disposizione del callback) ponendo questo nella callback:

puts "job: #{ job }" 

o

puts "job: #{ job.attributes }" 

o

puts "job: #{ job.attributes.first }" 

nessuno di questi ha funzionato e tutti hanno provocato "attributi" indefiniti.

risposta

8

devi usare arguments invece di attributes:

after_perform do |job| 
    record = job.arguments.first 
    # Do something with the record 
end 

Dove il mio metodo di esecuzione assomiglia:

def perform(record) 
    # Perform stuff 
end 
Problemi correlati