2010-01-19 12 views
116

मैं सोच रहा था कि क्या आप रेल कंसोल में आपके लिए कौन से डेटाबेस/ऑब्जेक्ट्स उपलब्ध हैं, इसकी सूची/जांच कर सकते हैं। मुझे पता है कि आप उन्हें अन्य टूल्स का उपयोग करके देख सकते हैं, मैं सिर्फ उत्सुक हूं। धन्यवाद।रेल: रेल कंसोल का उपयोग कर डेटाबेस टेबल/ऑब्जेक्ट्स को कैसे सूचीबद्ध करें?

+2

यह है कि – hgmnz

+0

यद्यपि स्क्रिप्ट/dbconsole है, हां, जो आपको mysql (या जो कुछ भी) में छोड़ देता है। कुछ अजनबी कारणों से मैं नियमित कंसोल से कॉलम/टेबल आदि सूचीबद्ध करना चाहता हूं। मैं सोच रहा हूं कि ऐसा करने के लिए कस्टम कस्टम रूबी विधियों की आवश्यकता हो सकती है। – rtfminc

उत्तर

239

आप शायद मांग कर रहे हैं:

ActiveRecord::Base.connection.tables 

और

ActiveRecord::Base.connection.table_structure("projects") 

आप शायद उन्हें छोटे एस में लपेटना चाहिए आपके .irbrc के अंदर yntax।

+3

धन्यवाद, पहला ऐसा काम करता है जैसा मैं चाहता हूं। लेकिन दूसरा नहीं - कुछ समान के लिए शिकार लेकिन कोई भाग्य नहीं है। – rtfminc

+12

ActiveRecord :: Base.connection.columns ("foos") भी काम करना चाहिए, लेकिन यह कॉलम ऑब्जेक्ट्स देता है, .map {| c | [c.name, c.type]} अंत में इसे ठीक करता है। – cwninja

+23

'table_structure' स्क्लाइट एडाप्टर के लिए विशिष्ट प्रतीत होता है। – Kelvin

-4

इसका एक शुरुआत है, यह सूचीबद्ध कर सकते हैं:

models = Dir.new("#{RAILS_ROOT}/app/models").entries 

कुछ और जा रहा है ...

+2

ऐसा करके आप मॉडलों की फाइलों को सूचीबद्ध करते हैं यदि डीबी में टेबल मौजूद हैं और मॉडल में मॉडल मॉडल नहीं है !! –

7

सभी मॉडल कक्षाओं की सूची प्राप्त करने के लिए, आप ActiveRecord::Base.subclasses उदा।

ActiveRecord::Base.subclasses.map { |cl| cl.name } 
ActiveRecord::Base.subclasses.find { |cl| cl.name == "Foo" } 
+1

इसके अलावा: 'ActiveRecord :: Base.descendants.map (&: name) ' – valk

12

मुझे आशा है कि मेरा देर उत्तर कुछ मदद के लिए हो सकता है।
यह रेल डेटाबेस कंसोल पर जाएगा।

rails db 

सुंदर आपकी क्वेरी उत्पादन प्रिंट

.headers on 
.mode columns 
(turn headers on and show database data in column mode) 

टेबल

.table 

'.help' सहायता देखने के लिए दिखाएं।
या एसक्यूएल स्टेटमेंट्स जैसे 'कारों से चुनें *

+4

' रेल dbconsole 'आपको जो भी डेटाबेस इंजन उपयोग कर रहा है उसके कमांड लाइन दुभाषिया (सीएलआई) में डालता है ... उपरोक्त SQLite कमांड हैं। .. पोस्टग्रेज़, उदाहरण के लिए, तालिकाओं को सूचीबद्ध करने के लिए '\ dt' का उपयोग करेंगे ... –

+0

यह सुनिश्चित करने का कोई तरीका है कि हर बार आपको आवेदन करने की आवश्यकता नहीं है। रेलवे डीबी चलाने पर हेडर और .more कॉलम – Mark

0

आप अपने रेल एप्लिकेशन का उपयोग कर रहे डेटाबेस को देखने के लिए rails dbconsole का उपयोग कर सकते हैं। यह वैकल्पिक उत्तर rails db है। दोनों आदेश आपको कमांड लाइन इंटरफ़ेस निर्देशित करेंगे और आपको उस डेटाबेस क्वेरी सिंटैक्स का उपयोग करने की अनुमति देंगे।

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