2009-12-11 14 views
9

मैं कच्चे एसक्यूएल क्वेरी को निम्नलिखित के रूप में चलाने के लिए चाहता हूं:Rails में ActiveRecord :: Base.connection.execute से त्रुटियों को कैप्चर कैसे करें?

ActiveRecord::Base.connection.execute(some_query); 

क्या मैं क्वेरी निष्पादित करते समय होने वाली किसी भी त्रुटि को कैप्चर कर सकता हूं? यदि हां, तो कैसे? execute कुछ देता है? यह दस्तावेज़ीकरण में नहीं कहता है।

चीयर्स

उत्तर

6

आप त्रुटियों को सामान्य के रूप में सहेज सकते हैं। उदाहरण के लिए:

begin 
    ActiveRecord::Base.connection.execute(some_query) 
rescue 
    # do stuff with exception 
end 

MySql (for example) adapter's code पर एक नज़र क्या हो रहा है देखने के लिए है।

इस मामले में, executeMySql::Result ऑब्जेक्ट देता है।

1

मुझे लगता है कि मैं इस सवाल का जवाब मिल गया। निष्पादन कथन उस त्रुटि को देता है जो इसे डेटाबेस से प्राप्त करता है और जिसे एक चर में प्रदर्शित किया जा सकता है और प्रदर्शित किया जा सकता है।

+0

क्या आप एक उदाहरण पोस्ट कर सकते हैं? – ardochhigh

4

execute विधि आमतौर पर संबंधित डेटाबेस एडेप्टर द्वारा कार्यान्वित की जाती है और संबंधित डेटाबेस पुस्तकालयों से परिणाम वस्तु लौटाती है। इसलिए, यदि आप MySQL का उपयोग कर रहे हैं तो वापसी मान Mysql::Result प्रकार का होगा।

आमतौर पर, यदि कोई त्रुटि है, तो विधि बस एक अपवाद उठाएगी जिसे बचाया जा सकता है।

संबंधित मुद्दे