mysql - Rails - what is the most efficient way to create record or update it (if the record exists)? -
golden_results नामक 3 प्राथमिक कुंजी के साथ एक MySQL संबंध है:
platform_id, release_id,
कॉन्फिगरेशन_आईडी
ये सभी अन्य संबंधों के लिए भी विदेशी कुंजी होते हैं।
अब, मेरे पास हर हफ्ते या इतने विकल्प स्कैन की तुलना में एक रेक काम है, और इसे भरता है उचित जानकारी के साथ संबंध।
दो मामलों हैं:
-
इस तीन-कुछ-कुंजी के साथ रिकॉर्ड पहले से मौजूद है: इस स्थिति में मैं अपडेट करना चाहूंगा ताज़ा डेटा के साथ मौजूदा रिकॉर्ड मैंने पढ़ा है कि वहाँ एक बार एक create_or_update विधि थी जो अब मौजूद नहीं है।
-
रिकॉर्ड मौजूद नहीं है: इस मामले में मैं यह रिकॉर्ड जोड़ना चाहता हूं डेटा के साथ।
क्योंकि यह डीबी तक एक बड़ी पहुंच हो सकती है, यह प्राप्त करने का आदर्श तरीका लेनदेन । मैंने पढ़ा है, जो प्रदर्शन परिप्रेक्ष्य से इसे प्राप्त करने का सबसे उचित तरीका सुझाते हैं।
मेरा वर्तमान कोड इस तरह दिखता है (यह निश्चित रूप से सबसे अच्छा समाधान नहीं है जैसा कि वर्णित है ...):
def add_golden_result रिकॉर्ड प्रतिक्रिया = GoldenResult.find_or_create_by (platform_id: record.platform_id, release_id: record.release_id, configuration_id: record.configuration_id) do | r | r.asr_ndr_bandwidth = record.asr_ndr_bandwidth r.normalized_ndr_bandwidth = record.asr_ndr_bandwidth / (10.0 * record.ndr_cpu) r.asr_latency_bandwidth = record.asr_latency_bandwidth अंत response.update (asr_ndr_bandwidth: record.asr_ndr_bandwidth, normalized_ndr_bandwidth: record.asr_ndr_bandwidth / (10.0 * रिकॉर्ड .ndr_cpu), asr_latency_bandwidth: record.asr_latency_bandwidth) समाप्ति
क्या कोई भी समाधान सुझा सकता है? (उम्मीद है कि एक मुझे अपनी खुद की क्वेरी लिखने के लिए नहीं पूछता है, ताकि रेल सम्मेलन ActiveRecord का उपयोग करके संरक्षित रहें)।
BTW- मैं mysql2 ड्राइवर के साथ रेल 4 का उपयोग कर रहा हूँ। / P>
धन्यवाद!
कोशिश करो find_or_create_by ()। < / P>
रिकॉर्ड = गोल्डन रिज़ल्ट.फंड_ या_क्रेट_बाइट (प्लेटफ़ॉर्म_आईडी: प्लेटफ़ॉर्म_आईडी, रिलीज़_आईडी: रिलीज़_आईडी, कॉन्फ़िगरेशन_आईडी: कॉन्फ़िगरेशन_आईडी) करना | रिकार्ड करें | # यदि आवश्यक हो तो एक नया रिकॉर्ड के लिए अतिरिक्त डेटा भरें
Comments
Post a Comment