Rails: Làm thế nào để liệt kê các bảng / đối tượng cơ sở dữ liệu bằng bàn điều khiển Rails?


147

Tôi đã tự hỏi nếu bạn có thể liệt kê / kiểm tra cơ sở dữ liệu / đối tượng nào có sẵn cho bạn trong bảng điều khiển Rails. Tôi biết bạn có thể thấy họ bằng các công cụ khác, tôi chỉ tò mò. Cảm ơn.


2
đó là kịch bản / dbconsole dành cho mặc dù
hgmnz

Vâng, điều đó thả bạn vào mysql (hoặc bất cứ điều gì). Đối với một số lý do lạ, tôi muốn liệt kê các cột / bảng vv từ bảng điều khiển thông thường. Tôi nghĩ rằng nó có thể yêu cầu các phương pháp ruby ​​tùy chỉnh để làm một việc như vậy.
rtfminc

Câu trả lời:


304

Có lẽ bạn đang tìm kiếm:

ActiveRecord::Base.connection.tables

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

Bạn có lẽ nên bọc chúng theo cú pháp ngắn hơn bên trong của bạn .irbrc.


3
Cảm ơn, cái đầu tiên hoạt động như tôi muốn. Nhưng cái thứ hai thì không - săn tìm thứ tương tự nhưng không gặp may.
rtfminc

12
ActiveRecord :: Base.connection.columns ("foos") cũng sẽ hoạt động, nhưng nó trả về các đối tượng cột, .map {| c | [c.name, c.type]} ở cuối sửa lỗi đó.
cwninja

27
table_structuredường như là cụ thể cho các bộ chuyển đổi sqlite.
Kelvin

4
Đối với Rails4, hãy sử dụng Model.column_names để liệt kê các cột trong bảng
Stephen Provis

4
Ngoài ra trong Rails 4, bạn chỉ có thể sử dụng ModelName để lấy danh sách các cột và kiểu dữ liệu của chúng.
themattkellyshow

20

Tôi hy vọng câu trả lời muộn của tôi có thể giúp đỡ.
Điều này sẽ đi đến bảng điều khiển cơ sở dữ liệu rails.

rails db

khá in đầu ra truy vấn của bạn

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

Hiển thị các bảng

.table

'.help' để xem trợ giúp.
Hoặc sử dụng các câu lệnh SQL như 'Chọn * từ ô tô'


7
'rails dbconsole' đưa bạn vào trình thông dịch dòng lệnh (CLI) của bất kỳ công cụ cơ sở dữ liệu nào bạn đang sử dụng ... ở trên là các lệnh SQLite ... Ví dụ, Postgres sẽ sử dụng '\ dt' để liệt kê các bảng ...
Tom Hundt

có cách nào để đảm bảo rằng mỗi khi bạn không phải áp dụng các tiêu đề. trên các cột và .more khi chạy đường ray db
Đánh dấu

7

Để có được danh sách tất cả các lớp mô hình, bạn có thể sử dụng, ActiveRecord::Base.subclassesvd

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

1
Ngoài ra:ActiveRecord::Base.descendants.map(&:name)
valk

4

Bạn có thể sử dụng rails dbconsoleđể xem cơ sở dữ liệu mà ứng dụng rails của bạn đang sử dụng. Đó là câu trả lời thay thế rails db. Cả hai lệnh sẽ hướng dẫn bạn giao diện dòng lệnh và sẽ cho phép bạn sử dụng cú pháp truy vấn cơ sở dữ liệu đó.


0

Chạy cái này:

Rails.application.eager_load! 

Sau đó

ActiveRecord::Base.descendants

Để trả về một danh sách các mô hình / bảng


-3

Đó là một khởi đầu, nó có thể liệt kê:

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

Tìm kiếm thêm ...


3
bằng cách này, bạn chỉ liệt kê các tệp mô hình nếu các bảng tồn tại trong db và không có mô hình fild trong thư mục mô hình !!
abo-elleef
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.