के साथ पोस्टग्रेस में तार लौटाता है। मैं एक रेल ऐप को mysql (mysql2 मणि) पोस्टग्रेज़ (पीजी मणि) का उपयोग करने से परिवर्तित कर रहा हूं।connection.select_value केवल पीजी मणि
mysql के साथ, ActiveRecord::Base.connection.select_value
कॉल, आंकड़ों के अनुसार आपके द्वारा लिखा गया मान उदाहरण के लिए:
> ActiveRecord::Base.connection.select_value("SELECT COUNT(*) FROM errors")
=> 86
> ActiveRecord::Base.connection.select_value("SELECT exception FROM errors where id=565")
=> "TechTalk.Genome.SqlExecutionException"
> ActiveRecord::Base.connection.select_value("SELECT id FROM errors where id=565")
=> 565
हालांकि, postgres साथ, connection.select_value
हमेशा एक स्ट्रिंग रिटर्न:
> ActiveRecord::Base.connection.select_value("SELECT COUNT(*) FROM errors")
=> "1"
> ActiveRecord::Base.connection.select_value("SELECT id FROM errors")
=> "1"
> ActiveRecord::Base.connection.select_value("SELECT source FROM errors limit 1")
=> "webapp"
यह कुछ इकाई तोड़ दिया परीक्षण, और जब वे फिक्स करने योग्य हैं, तो मुझे यकीन है कि हमारे पास इन वापसी मूल्यों पर निर्भर अन्य कोड है। पोस्टग्रेज़ का उपयोग करते समय connection.select_value
से उचित टाइप किए गए रिटर्न मान प्राप्त करने का कोई तरीका है?
सबसे खराब जवाब कभी भी! ;) धन्यवाद। –
"देशी 'libpq' ड्राइवर के शीर्ष पर जितना संभव हो उतना पतला परत।" मुसीबत है, रूबी में स्ट्रिंग आवंटन वास्तव में काफी महंगा है, –
लगता है कि यह परिस्थिति का मामला है कि क्या यह प्रत्येक कॉलम के लिए स्ट्रिंग आवंटित करने के लिए अधिक अपर्याप्त है या डिफ़ॉल्ट रूप से PostgreSQL प्रकारों को रूबी में मैप करने का प्रयास करें। यदि आपके कॉलम प्रकारों में रूबी में सटीक न्यूमेरिक-व्युत्पन्न (गैर-बिग्नम) समकक्ष हैं, तो शायद यह स्ट्रिंग्स के रूप में उन सभी का प्रतिनिधित्व करने के लिए अपर्याप्त है। हालांकि, यह अपेक्षाकृत दुर्लभ परिस्थिति में संभावित मेमोरी अपशिष्ट के आधार पर केवल आंशिक रूप से पूर्ण प्रकार-मैपिंग सिस्टम को लागू करने के लिए मेरे लिए गैर जिम्मेदार लगता है। –