2015-04-13 12 views
6

रेल 4.2, सक्रिय_jobs, callback_methodsActiveJob कॉलबैक विधियों में नौकरी विशेषताओं को कैसे प्राप्त करें?

कस्टम नौकरी के प्रदर्शन विधि में मैंने एक नया रिकॉर्ड बनाया (और S3 को फ़ाइल अपलोड करें)। After_perform कॉलबैक में मैं उस नए रिकॉर्ड आईडी को कैसे पास या प्राप्त कर सकता हूं? मैं S3 दस्तावेज़ के लिंक के साथ बाद में एक ईमेल भेजना चाहता हूं ... लेकिन, यह सुनिश्चित नहीं है कि id_perform विधि के अंदर आईडी कैसे प्राप्त करें। दस्तावेज़ों के मुताबिक आप job.attributes का उपयोग कर सकते हैं, लेकिन मुझे 'अपरिभाषित विधि विशेषताओं' मिलते हैं।

मैं मेलर कॉल को निष्पादन विधि में स्थानांतरित कर सकता हूं, लेकिन आईडी कॉलबैक का उपयोग करके इसे सही तरीके से संभाल सकता है। मैं निष्पादन विधि के बाहर विशेषताओं तक पहुंचने के लिए सुनिश्चित नहीं हूं (या जहां वे गुण उत्पन्न होते हैं)।

puts "job: #{ job }" 

या

puts "job: #{ job.attributes }" 

या

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

मैं कॉलबैक में इस रखकर कुछ जासूसी काम करने के लिए (उपलब्ध जिम्मेदार बताते हैं क्या कॉलबैक करने के लिए कर रहे थे निर्धारित करने के लिए) की कोशिश की

इनमें से कोई भी काम नहीं करता है, और सभी के परिणामस्वरूप अनिर्धारित 'गुण' हैं।

उत्तर

8

आप attributes के बजाय arguments उपयोग करने के लिए:

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

मेरे प्रदर्शन विधि लगता है:

def perform(record) 
    # Perform stuff 
end 
संबंधित मुद्दे