ฉันรู้ว่าคุณสามารถขอให้ ActiveRecord แสดงรายการตารางในคอนโซลโดยใช้:
ActiveRecord::Base.connection.tables
มีคำสั่งที่จะแสดงรายการคอลัมน์ในตารางที่กำหนดหรือไม่
ฉันรู้ว่าคุณสามารถขอให้ ActiveRecord แสดงรายการตารางในคอนโซลโดยใช้:
ActiveRecord::Base.connection.tables
มีคำสั่งที่จะแสดงรายการคอลัมน์ในตารางที่กำหนดหรือไม่
คำตอบ:
ซึ่งจะแสดงรายการ column_names จากตาราง
Model.column_names
e.g. User.column_names
Model.columns
ให้ข้อมูลทั้งหมดสำหรับตารางผ่าน ActiveRecord สิ่งสำคัญสำหรับฉันมันเป็นวิธีเดียวและง่ายที่สุดในการสร้างความมั่นใจว่าคีย์หลักของฉันอยู่ที่ระดับฐานข้อมูลจริงๆ
สิ่งนี้ได้รับคอลัมน์ไม่ใช่แค่ชื่อคอลัมน์และใช้ ActiveRecord :: Base :: Connection ดังนั้นจึงไม่จำเป็นต้องมีโมเดล สะดวกสำหรับการส่งออกโครงสร้างของฐานข้อมูลอย่างรวดเร็ว
ActiveRecord::Base.connection.tables.each do |table_name|
puts table_name
ActiveRecord::Base.connection.columns(table_name).each do |c|
puts "- #{c.name}: #{c.type} #{c.limit}"
end
end
ตัวอย่างผลลัพธ์: http://screencast.com/t/EsNlvJEqM
primary
แอตทริบิวต์อย่างถูกต้อง (ทุกคอลัมน์มีprimary=nil
) ตั้งค่าอย่างถูกต้องด้วยModel.columns
วิธีที่แนะนำโดย srt32
การใช้รางสามคุณสามารถพิมพ์ชื่อรุ่น:
> User
gives:
User(id: integer, name: string, email: string, etc...)
ในรางสี่คุณต้องสร้างการเชื่อมต่อก่อน:
irb(main):001:0> User
=> User (call 'User.connection' to establish a connection)
irb(main):002:0> User.connection; nil #call nil to stop repl spitting out the connection object (long)
=> nil
irb(main):003:0> User
User(id: integer, name: string, email: string, etc...)
หากคุณพอใจกับคำสั่ง SQL คุณสามารถเข้าสู่โฟลเดอร์ของแอปและเรียกใช้rails db
ซึ่งเป็นรูปแบบย่อของrails dbconsole
ไฟล์. มันจะเข้าสู่เชลล์ของฐานข้อมูลของคุณไม่ว่าจะเป็น sqlite หรือ mysql
จากนั้นคุณสามารถสอบถามคอลัมน์ของตารางโดยใช้คำสั่ง sql เช่น:
pragma table_info(your_table);
describe your_table;
ไม่สมบูรณ์แบบ แต่ใช้งานได้
คุณสามารถเรียกใช้rails dbconsole
เครื่องมือบรรทัดคำสั่งเพื่อเปิดคอนโซล sqlite จากนั้นพิมพ์.tables
เพื่อแสดงรายการตารางทั้งหมดและ.fullschema
รับรายชื่อตารางทั้งหมดพร้อมชื่อคอลัมน์และประเภท
Model.column_names.sort
การแสดงรายชื่อคอลัมน์ในตารางผมมักจะไปกับเรื่องนี้ที่:
i.e. Orders.column_names.sort
การจัดเรียงชื่อคอลัมน์ทำให้ง่ายต่อการค้นหาสิ่งที่คุณกำลังมองหา
Model.columns.map{|column| [column.name, column.sql_type]}.to_h
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแต่ละคอลัมน์ที่ใช้นี้
สิ่งนี้จะให้แฮชที่ดี ตัวอย่างเช่น:
{
id => int(4),
created_at => datetime
}
การเสริมข้อมูลที่เป็นประโยชน์นี้ตัวอย่างเช่นการใช้คอนโซลราง o ราง dbconsole:
นักเรียนคือโมเดลของฉันโดยใช้คอนโซลราง:
$ rails console
> Student.column_names
=> ["id", "name", "surname", "created_at", "updated_at"]
> Student
=> Student(id: integer, name: string, surname: string, created_at: datetime, updated_at: datetime)
ตัวเลือกอื่น ๆ ที่ใช้ SQLite ผ่าน Rails:
$ rails dbconsole
sqlite> .help
sqlite> .table
ar_internal_metadata relatives schools
relationships schema_migrations students
sqlite> .schema students
CREATE TABLE "students" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "surname" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL);
สุดท้ายสำหรับข้อมูลเพิ่มเติม
sqlite> .help
หวังว่านี่จะช่วยได้!
Model.columns
เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับคอลัมน์รวมถึงข้อมูลการกำหนดค่าฐานข้อมูล