Respuestas:
Esto listará los column_names de una tabla
Model.column_names
e.g. User.column_names
Model.columns
proporciona toda la información para una tabla a través de ActiveRecord. Fundamentalmente para mí, fue la única y más sencilla forma de ganar confianza en cuál era realmente mi clave principal a nivel de base de datos.
Esto obtiene las columnas, no solo los nombres de las columnas y usa ActiveRecord :: Base :: Connection, por lo que no se necesitan modelos. Útil para generar rápidamente la estructura de una base de datos.
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
Salida de muestra: http://screencast.com/t/EsNlvJEqM
primary
atributo correctamente (todas las columnas lo tienen primary=nil
). Está configurado correctamente con el Model.columns
método sugerido por srt32.
Usando los rieles tres, puede simplemente escribir el nombre del modelo:
> User
gives:
User(id: integer, name: string, email: string, etc...)
En los carriles cuatro, primero debe establecer una conexión:
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...)
Si se siente cómodo con los comandos SQL, puede ingresar a la carpeta de su aplicación y ejecutarla rails db
, que es una forma breve de rails dbconsole
. Ingresará al shell de su base de datos, ya sea sqlite o mysql.
Luego, puede consultar las columnas de la tabla usando el comando sql como:
pragma table_info(your_table);
describe your_table;
, no es perfecto pero funciona
Puede ejecutar rails dbconsole
su herramienta de línea de comandos para abrir la consola sqlite. Luego escriba .tables
para enumerar todas las tablas y .fullschema
para obtener una lista de todas las tablas con nombres y tipos de columnas.
Para una lista de las columnas de una tabla por lo general voy con esto:
Model.column_names.sort
.
i.e. Orders.column_names.sort
Ordenar los nombres de las columnas facilita la búsqueda de lo que busca.
Para obtener más información sobre cada una de las columnas utilizan este:
Model.columns.map{|column| [column.name, column.sql_type]}.to_h
.
Esto proporcionará un buen hash. por ejemplo:
{
id => int(4),
created_at => datetime
}
complementando esta útil información, por ejemplo usando rails console o rails dbconsole:
El estudiante es mi modelo, usando la consola de rieles:
$ 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)
Otra opción usando SQLite a través de 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);
Finalmente para más información.
sqlite> .help
¡Espero que esto ayude!
Model.columns
para obtener más información sobre las columnas, incluidos los datos de configuración de la base de datos.