आप ex.bindings
द्वारा सभी Bindings तक पहुंच सकते हैं। सुनिश्चित करें कि आप अपने काम के लिए सही बाध्यकारी प्राप्त करने के लिए आप इस तरह रिसीवर की जांच होनी चाहिए:
method_binding = ex.bindings.find { |b| b.receiver.is_a?(self.class) }
तो फिर तुम .local_variable_get
के साथ सभी स्थानीय चर मिल सकती है। तो अगर आप उदाहरण के लिए
user = method_binding.local_variable_get(:user)
post = method_binding.local_variable_get(:post)
:: चूंकि विधि तर्क भी स्थानीय चर रहे हैं, आप कम से कम उन्हें स्पष्ट रूप से प्राप्त कर सके
def perform object
end
rescue_from Exception do |e|
if e.class != ActiveRecord::RecordNotFound
method_binding = ex.bindings.find { |b| b.receiver.is_a?(self.class) }
object = method_binding.local_variable_get(:object)
# do something
end
end
1. यह अभी भी संभव है कि यह बाध्यकारी से एक नहीं है perform
यदि आप अपने काम की प्रदर्शन विधि में अन्य उदाहरण विधियों को कॉल करते हैं और त्रुटि वहां होती है। इसे ध्यान में भी लिया जा सकता है लेकिन ब्रेवटी के लिए छोड़ दिया जाता है।
अपवाद कहां है? प्रदर्शन विधि में? यदि ऐसा है, तो बस प्रदर्शन विधि के भीतर अपराधी कोड के नीचे अपना बचाव ब्लॉक रखें। आपके पास 'ऑब्जेक्ट' पैरामीटर तक स्थानीय चर के रूप में पहुंच होगी। – Noz
नोज़, मेरे पास पहले_enqueue और आस-पास के साथ-साथ rescue_from भी है। – ConfusedUser
मैंने पहले उनमें से किसी का भी उपयोग नहीं किया है, लेकिन क्या आप अपने ब्लॉक ब्लॉक को उन ब्लॉकों में से किसी एक में नहीं डाल सकते हैं? मुझे नहीं लगता कि आप अपने ActiveJob में 'rescue_from' का उपयोग करना चाहते हैं, एक सरल' बचाव ActoveRecord :: RecordNotFound => e' पर्याप्त होना चाहिए। – Noz