2010-01-19 15 views
116

Me preguntaba si podría enumerar/examinar qué bases de datos/objetos están disponibles para usted en la consola de Rails. Sé que puedes verlos usando otras herramientas, solo tengo curiosidad. Gracias.Rieles: ¿Cómo enumerar las tablas/objetos de la base de datos utilizando la consola de Rails?

+2

eso es para lo que es script/dbconsole aunque – hgmnz

+0

Sí, eso te deja en mysql (o lo que sea). Por algún extraño motivo, deseo enumerar columnas/tablas, etc., desde la consola común. Estoy pensando que podría requerir métodos ruby ​​hechos a medida para hacer tal cosa. – rtfminc

Respuesta

239

Usted probablemente está buscando:

ActiveRecord::Base.connection.tables 

y

ActiveRecord::Base.connection.table_structure("projects") 

Usted probablemente debería envolverlos en s más cortos yntaxis dentro de tu .irbrc.

+3

Gracias, el primero funciona como yo quiero. Pero el segundo no ... buscado algo similar pero sin suerte. – rtfminc

+12

ActiveRecord :: Base.connection.columns ("foos") también debería funcionar, pero devuelve objetos de columna, .map {| c | [c.name, c.type]} al final corrige eso. – cwninja

+23

'table_structure' parece ser específico del adaptador sqlite. – Kelvin

-4

Es un comienzo, se puede enumerar:

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

Mirando un poco más ...

+2

haciendo esto, solo enumera los archivos de modelos, ¿y si las tablas existen en db y no tienen el modelo fild en el directorio de modelos? –

7

Para obtener una lista de todas las clases de modelos, puede usar ActiveRecord::Base.subclasses, p.

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

También: 'ActiveRecord :: Base.descendants.map (&: name)' – valk

12

Espero que mi respuesta tardía pueda ser de alguna ayuda.
Esto irá a la consola de la base de datos de rieles.

rails db 

bastante imprimir su salida de la consulta

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

Mostrar las tablas de

.table 

'.help' para ver la ayuda.
O utilice sentencias de SQL como 'Seleccionar * de autos'

+4

'rails dbconsole' lo pone en el intérprete de línea de comandos (CLI) del motor de base de datos que está utilizando ... los anteriores son comandos SQLite. .. Postgres, por ejemplo, usaría '\ dt' para listar tablas ... –

+0

hay una manera de asegurarse de que cada vez que no tenga que aplicar .headers en y .más columnas cuando ejecute rails db – Mark

0

Puede usar rails dbconsole para ver la base de datos que utiliza su aplicación de rieles. Es una respuesta alternativa rails db. Ambos comandos le dirigirán la interfaz de línea de comando y le permitirán usar esa sintaxis de consulta de la base de datos.

Cuestiones relacionadas