2010-05-29 11 views
60

जब मैं कंसोल में क्वेरी चलाता हूं (उदा। MyModel.where(...) या record.associated_things), मैं वास्तविक डेटाबेस क्वेरी कैसे चला सकता हूं ताकि मैं क्या हो रहा है, इसके बारे में और समझ सकूं?रेल कंसोल में चलने वाले SQL क्वेरी कैसे दिखाएं?

+0

एंड्रयू, यदि आप broweser में आदेश को चलाने के लिए भी जरूरत है आप उपयोग कर सकते https://github.com/igorkasyanchuk/rails_db –

+0

भी देखें इस उत्तर: http://stackoverflow.com/a/1576221/446106 – mwfearnley

उत्तर

144

कंसोल में इस लाइन दर्ज करें:

ActiveRecord::Base.logger = Logger.new(STDOUT) 
+0

बिल्कुल सही , मुझे जिस चीज की जरूरत थी। क्या कोई सिफारिश है कि इन्हें छोटी सी चालें कहां मिलेंगी? – randombits

+2

निश्चित रूप से। http://slash7.com/2006/12/21/secrets-of-the-rails-console-ninjas/ और http://stackoverflow.com/questions/123494/whats-your-favourite-irb-trick Plus http : //railscasts.com/ हमेशा अच्छा है। –

+1

यह रेल 3+ के लिए काम करता है लेकिन 2 नहीं, http://stackoverflow.com/a/1576221 देखें यदि आप अभी भी हैं :) – rogerdpack

0

तदर्थ कंसोल में ActiveRecord प्रश्नों हालांकि नहीं है। वैसे भी उस व्यवहार को बदलें?

क्या आप इसके बारे में निश्चित हैं? मैं इस तरह की चीजों के लिए हर समय कंसोल का उपयोग करता हूं। विकास पर्यावरण के लिए, डिफ़ॉल्ट व्यवहार विकास.लॉग पर प्रश्नों को लॉग करना है। क्या आप वाकई अपने पर्यावरण में अपना लॉग स्तर नहीं बदल चुके हैं?

क्या आप विकास.आरबी में निम्नलिखित देखते हैं?

config.log_level = :debug 
18

रेल में 3+ आप ActiveRecord :: रिलेशन के to_sql विधि का उपयोग कर सकते हैं:

User.where(:id => 3).to_sql 
#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = 3" 
11

, रेल में एक .explain विधि 4.
(.to_sql भी काम करता है नहीं है, लेकिन वह दिखाई नहीं देगा शामिल)

Category.includes(:products).explain 
=> EXPLAIN for: SELECT "categories".* FROM "categories" 0|0|0|SCAN TABLE categories 

EXPLAIN for: SELECT "categories_products".* FROM "categories_products" WHERE "categories_products"."category_id" IN (1, 2) 0|0|0|SCAN TABLE categories_products 

EXPLAIN for: SELECT "products".* FROM "products" WHERE "products"."id" IN (1, 2, 3, 4, 5, 6, 7) 0|0|0|SEARCH TABLE products USING INTEGER PRIMARY KEY (rowid=?) 0|0|0|EXECUTE LIST SUBQUERY 1 
0

हाल ही में से रूप में, आप इस का उपयोग कर सकते हैं:

https://github.com/dejan/rails_panel

यह ऐड-ऑन क्रोम के लिए, और मणि फ़ाइल जो इस तरह अपने आवेदन की Gemfile के लिए जोड़ा जा करने की जरूरत है डेवलपर कंसोल पैनल के होते हैं:

group :development do 
    gem 'meta_request' 
end 

फिर चलाएँ:

bundle install 

अपने एप्लिकेशन को पुनरारंभ करें, इसे खोलें, और डेवलपर कंसोल लॉन्च करें, और आपको इसे इस तरह देखना चाहिए: enter image description here

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