मैं update_all का उपयोग करने में फ़ील्ड को अपडेट करने का प्रयास कर रहा हूं। हालांकि मुझे किसी अन्य क्षेत्र से लिया जाने वाला मूल्य चाहिए जो मेरे विशिष्ट प्रारूप में फिर से लिखा गया है।किसी अन्य कॉलम से मूल्य वाले फ़ील्ड्स को अपडेट करने के लिए Rails update_all विधि का उपयोग
अगर मैं अपने मॉडल में कुछ इस तरह है:
def self.clean_mac_address()
clean_mac_address = :macaddress.gsub(/[^0-9a-z]/i, '')
end
जब मैं इस चलाएँ:
Radacct.update_all("mac_clean = #{clean_mac_address}")
मैं एक त्रुटि मिलती है:
NoMethodError: undefined method `gsub' for :macaddress:Symbol
किसी भी विचार कैसे मैं कर सकते हैं यह करो? या क्षेत्र को अद्यतन करने का एक आसान तरीका है?
मुझे शक है अगर आप 'एक' symbol' पर gsub' विधि का उपयोग कर सकते हैं। हो सकता है कि आपको त्रुटि मिल रही हो। – uday
सबसे पहले, आप प्रतीक पर 'gsub' क्यों कॉल कर रहे हैं? दूसरा, अगर मैं सही ढंग से समझता हूं तो आप प्रत्येक रिकॉर्ड के लिए अन्य कॉलम के आधार पर 'mac_clean' कॉलम की गणना और भरना चाहते हैं। उस स्थिति में आप केवल 'update_all' का उपयोग कर सकते हैं यदि आप एसक्यूएल में सभी मैनिपुलेशन करते हैं तो' update_all' आपके द्वारा रिकॉर्ड किए गए अपडेट को सभी रिकॉर्ड पर स्ट्रिंग के रूप में चलाएगा, लेकिन यह उन्हें डीबी से लोड नहीं करेगा और ' मॉडल उदाहरण शुरू नहीं करते हैं। इसका मतलब है कि आप SQL क्वेरी से निपट रहे हैं और 'ActiveRecord' विशेषताओं तक सीधे पहुंच नहीं है। –
@ केएल 7: मैकड्रेस को प्रतीक नहीं माना जाता है - यह एक स्ट्रिंग होना चाहिए। तो, मुझे प्रत्येक रिकॉर्ड और अद्यतन के माध्यम से लूप को कुछ लिखना है ?? थोड़ा उलझन में हूँ। – simonmorley