Rails : Rails 콘솔을 사용하여 데이터베이스 테이블 / 객체를 나열하는 방법은 무엇입니까?


148

Rails 콘솔에서 어떤 데이터베이스 / 객체를 사용할 수 있는지 나열 / 검토 할 수 있는지 궁금합니다. 다른 도구를 사용하여 볼 수 있다는 것을 알고 있습니다. 궁금합니다. 감사.


2
이것이 스크립트 /
DB 콘솔의 목적입니다

예, 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_structuresqlite 어댑터에만 해당되는 것 같습니다.
Kelvin

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'
또는 'Select * from cars'와 같은 SQL 문을 사용하십시오.


7
'rails dbconsole'을 사용하면 사용중인 데이터베이스 엔진의 명령 줄 인터프리터 (CLI)에 넣을 수 있습니다 ... 위는 SQLite 명령입니다 ... 예를 들어 Postgres는 '\ dt'를 사용하여 테이블을 나열합니다 ...
Tom Hundt 2016 년

레일을 실행할 때 .headers 및 .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 dbconsolerails 애플리케이션이 사용중인 데이터베이스를 보는 데 사용할 수 있습니다 . 다른 답변 rails db입니다. 두 명령 모두 명령 행 인터페이스를 지시하고 해당 데이터베이스 쿼리 구문을 사용할 수있게합니다.


0

이것을 실행하십시오 :

Rails.application.eager_load! 

그때

ActiveRecord::Base.descendants

모델 / 테이블 목록을 반환하려면


-3

시작이며 다음과 같이 나열 할 수 있습니다.

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

좀 더보고 ...


3
이 작업을 수행하면 테이블이 db에 존재하고 models dir에 모델 fild가없는 경우 모델 파일을 나열합니다.
abo-elleef
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.