Respostas:
Isto irá listar os column_names de uma tabela
Model.column_names
e.g. User.column_names
Model.columns
fornece todas as informações de uma tabela por meio do ActiveRecord. Crucialmente para mim, era a única e mais fácil maneira de ganhar confiança no que realmente era minha chave primária no nível do banco de dados.
Isso obtém as colunas, não apenas os nomes das colunas e usa ActiveRecord :: Base :: Connection, portanto, nenhum modelo é necessário. Prático para gerar rapidamente a estrutura de um banco de dados.
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
Saída de amostra: http://screencast.com/t/EsNlvJEqM
primary
atributo corretamente (todas as colunas o fizeram primary=nil
). Ele está configurado corretamente com o Model.columns
método sugerido por srt32.
Usando os trilhos três, você pode simplesmente digitar o nome do modelo:
> User
gives:
User(id: integer, name: string, email: string, etc...)
Nos trilhos quatro, você precisa estabelecer uma conexão primeiro:
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...)
Se você estiver familiarizado com os comandos SQL, poderá entrar na pasta do seu aplicativo e executar rails db
, que é uma forma breve de rails dbconsole
. Ele entrará no shell do seu banco de dados, seja ele sqlite ou mysql.
Então, você pode consultar as colunas da tabela usando o comando sql como:
pragma table_info(your_table);
describe your_table;
, não é perfeito, mas funciona
Você pode executar rails dbconsole
em sua ferramenta de linha de comando para abrir o console sqlite. Em seguida, digite .tables
para listar todas as tabelas e .fullschema
obter uma lista de todas as tabelas com nomes e tipos de coluna.
Para listar as colunas de uma tabela Eu costumo ir com isso:
Model.column_names.sort
.
i.e. Orders.column_names.sort
Classificar os nomes das colunas facilita encontrar o que você está procurando.
Para mais informações sobre cada uma das colunas usar este:
Model.columns.map{|column| [column.name, column.sql_type]}.to_h
.
Isso fornecerá um bom hash. por exemplo:
{
id => int(4),
created_at => datetime
}
complementando esta informação útil, por exemplo usando console rails ou dbconsole rails:
Aluno é meu modelo, usando console de trilhos:
$ 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)
Outra opção usando SQLite atravé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 mais informações.
sqlite> .help
Espero que isto ajude!
Model.columns
obter mais informações sobre as colunas, incluindo dados de configuração do banco de dados.