Rails: จะแสดงรายการตาราง / วัตถุฐานข้อมูลโดยใช้คอนโซล Rails ได้อย่างไร?


148

ฉันสงสัยว่าคุณสามารถแสดงรายการ / ตรวจสอบฐานข้อมูล / วัตถุใดบ้างที่คุณมีอยู่ในคอนโซล Rails ฉันรู้ว่าคุณสามารถเห็นพวกเขาโดยใช้เครื่องมืออื่น ๆ ฉันแค่อยากรู้ ขอบคุณ


2
นั่นคือสิ่งที่สคริปต์ / dbconsole มีไว้สำหรับ
hgmnz

ใช่นั่นทำให้คุณตกอยู่ใน 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
สำหรับ Rails4 ใช้ Model.column_names เพื่อแสดงรายการคอลัมน์ตาราง
Stephen Provis

4
นอกจากนี้ใน Rails 4 คุณสามารถใช้ModelNameเพื่อรับรายการคอลัมน์และชนิดข้อมูล
themattkellyshow

20

ฉันหวังว่าคำตอบของฉันจะช่วยได้บ้าง
สิ่งนี้จะไปที่คอนโซลฐานข้อมูลทางรถไฟ

rails db

พิมพ์ออกแบบสอบถามของคุณสวย

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

แสดงตาราง

.table

'.help' เพื่อดูความช่วยเหลือ
หรือใช้คำสั่ง SQL เช่น 'Select * from cars'


7
'rails dbconsole' ทำให้คุณอยู่ใน command line interpreter (CLI) ของเครื่องมือฐานข้อมูลใด ๆ ที่คุณใช้ ... ข้างต้นคือคำสั่ง SQLite ... Postgres ตัวอย่างเช่นจะใช้ '\ dt' เพื่อแสดงรายการตาราง ...
Tom Hundt

มีวิธีการเพื่อให้แน่ใจว่าทุกครั้งที่คุณไม่ต้องใช้. ส่วนหัวบนและ. คอลัมน์เพิ่มเติมเมื่อใช้ rails 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 และไม่ได้มีแบบจำลอง fild ในแบบจำลอง dir !!
abo-elleef
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.