कोई भी ActiveJob::SerializationError
से बचने के लिए एक साफ तरीका जानता है जो Date
या Time
ऑब्जेक्ट को क्रमबद्ध करने का प्रयास करते समय होता है? जब तर्क load
वापस नौकरी में लोड हो रहा है और उसके बाद (जो बेकार है क्योंकि मैं बंदर की जरूरत पैचSerializationError Rails ActiveJob समय और दिनांक
- कॉल मार्शल/JSON/YAML
dump
:दो समाधान मैं मिला है अब तक कर रहे हैं मेलर काम)
- बंदर पैच
Date
औरTime
तो जैसे:
/lib/core_ext/time.rb
class Time
include GlobalID::Identification
def id
self.to_i
end
def self.find(id)
self.at(id.to_i)
end
end
/lib/core_ext/date.rb
class Date
include GlobalID::Identification
def id
self.to_time.id
end
def self.find(id)
Time.find(id).to_date
end
end
कौन सा भी बेकार है। किसी के पास बेहतर समाधान है?
क्या नौकरी के लिए केवल तारीख या समय (और क्यों) पास करना वास्तव में आवश्यक है? मुझे लगता है कि नौकरी के पैरामीटर के रूप में ActiveModel को पास करना बेहतर होगा, संभवतः दिनांक या समय उदाहरण शामिल है। (ActiveModels में GlobalID :: पहचान शामिल है, इसलिए वे serialisable हैं) – sourcx
नहीं, यह वास्तव में आवश्यक नहीं है। यह सिर्फ सुविधाजनक है। और इसके शीर्ष पर, हमने ActiveJob को एकीकृत करने से पहले DelayedJob के साथ काम किया। तो ... यह गूंगा लगता है कि मुझे बदलने के लिए कार्यक्षमता के विपरीत अमूर्त माना जाता है कि कुछ के साथ एकीकृत करने के लिए मुझे अपना कोड बदलने की आवश्यकता होगी। – kddeisz
आप केवल दिनांक/समय वस्तु को अंजाम देते हैं? और कुछ नहीं? AFAIK, ActiveJob वास्तव में मार्शल को आपके ऑब्जेक्ट को क्रमबद्ध करने के लिए कहता है और बंदर पैच की तरह कुछ चाहिए जो आपने बाद में इस ऑब्जेक्ट को पुनर्प्राप्त करने और याद करने में सक्षम होने के लिए कहा था। क्या आप अपना मेलर पोस्ट कर सकते हैं? – lsdr