Câu trả lời:
Thao tác này sẽ liệt kê các tên_cột từ một bảng
Model.column_names
e.g. User.column_names
Model.columns
cung cấp tất cả thông tin cho một bảng thông qua ActiveRecord. Điều quan trọng đối với tôi, đó là cách duy nhất và dễ dàng nhất để có được niềm tin về khóa chính của tôi thực sự là gì ở cấp cơ sở dữ liệu.
Điều này lấy các cột, không chỉ tên cột và sử dụng ActiveRecord :: Base :: Connection, vì vậy không cần mô hình nào. Tiện dụng để nhanh chóng xuất ra cấu trúc của một db.
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
Đầu ra mẫu: http://screencast.com/t/EsNlvJEqM
primary
thuộc tính chính xác (tất cả các cột đều có primary=nil
). Nó được đặt đúng với Model.columns
phương pháp được gợi ý bởi srt32.
Sử dụng đường ray ba, bạn có thể chỉ cần nhập tên mô hình:
> User
gives:
User(id: integer, name: string, email: string, etc...)
Trong đường ray bốn, trước tiên bạn cần thiết lập kết nối:
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...)
Nếu bạn cảm thấy thoải mái với các lệnh SQL, bạn có thể nhập thư mục của ứng dụng và chạy rails db
, đây là một dạng ngắn gọn của rails dbconsole
. Nó sẽ nhập shell của cơ sở dữ liệu của bạn, cho dù đó là sqlite hay mysql.
Sau đó, bạn có thể truy vấn các cột trong bảng bằng lệnh sql như:
pragma table_info(your_table);
describe your_table;
, không hoàn hảo nhưng hoạt động
Bạn có thể chạy rails dbconsole
công cụ dòng lệnh của mình để mở bảng điều khiển sqlite. Sau đó, nhập .tables
để liệt kê tất cả các bảng và .fullschema
để nhận danh sách tất cả các bảng có tên và kiểu cột.
Để liệt kê các cột trong một bảng tôi thường đi với điều này:
Model.column_names.sort
.
i.e. Orders.column_names.sort
Sắp xếp tên cột giúp bạn dễ dàng tìm thấy những gì bạn đang tìm kiếm.
Để biết thêm thông tin về từng cột sử dụng này:
Model.columns.map{|column| [column.name, column.sql_type]}.to_h
.
Điều này sẽ cung cấp một hàm băm đẹp. ví dụ:
{
id => int(4),
created_at => datetime
}
bổ sung thông tin hữu ích này, ví dụ: sử dụng bảng điều khiển rails o rails dbconsole:
Student là Model của tôi, sử dụng bảng điều khiển rails:
$ 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)
Tùy chọn khác sử dụng SQLite thông qua 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);
Cuối cùng để biết thêm thông tin.
sqlite> .help
Hi vọng điêu nay co ich!
Model.columns
để biết thêm thông tin về các cột bao gồm dữ liệu cấu hình cơ sở dữ liệu.