रेल्स: रेल्स कंसोल का उपयोग करके डेटाबेस टेबल / ऑब्जेक्ट को कैसे सूचीबद्ध करें?


148

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


2
हालांकि यह स्क्रिप्ट /
डबकोन्सोल के

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

जवाबों:


305

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

ActiveRecord::Base.connection.tables

तथा

ActiveRecord::Base.connection.columns('projects').map(&:name)

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


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

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

27
table_structureलगता है कि sqlite एडॉप्टर के लिए विशिष्ट है।
केल्विन

4
रेल 4 के लिए तालिका कॉलमों को सूचीबद्ध करने के लिए Model.column_names का उपयोग करें
स्टीफन प्रोविस

4
इसके अलावा रेल 4 में, आप कॉलम और उनके डेटा प्रकारों की सूची प्राप्त करने के लिए मॉडलनाम का उपयोग कर सकते हैं।
themattkellyshow

20

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

rails db

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

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

टेबल दिखाओ

.table

मदद को देखने के लिए '.help'।
या 'कारों से चयन करें' जैसे एसक्यूएल स्टेटमेंट का उपयोग करें


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

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

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

4

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


0

इसे चलाओ:

Rails.application.eager_load! 

फिर

ActiveRecord::Base.descendants

मॉडल / तालिकाओं की सूची वापस करने के लिए


-3

इसकी शुरुआत है, यह सूची कर सकता है:

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

कुछ और देख रहे हैं ...


3
ऐसा करने से आप सिर्फ मॉडल फाइलों को सूचीबद्ध करते हैं कि क्या तालिकाएँ db में मौजूद हैं और मॉडल dir में मॉडल फ़िल्ड नहीं है !!
abo-elleef
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.