Risposte:
Questo elencherà i nomi delle colonne da una tabella
Model.column_names
e.g. User.column_names
Model.columns
fornisce tutte le informazioni per una tabella tramite ActiveRecord. Fondamentale per me è stato l'unico e più semplice modo per acquisire fiducia in quella che era veramente la mia chiave primaria a livello di database.
Questo ottiene le colonne, non solo i nomi delle colonne e utilizza ActiveRecord :: Base :: Connection, quindi non sono necessari modelli. Comodo per riprodurre rapidamente la struttura di un db.
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
Output di esempio: http://screencast.com/t/EsNlvJEqM
primary
correttamente l' attributo (tutte le colonne lo hanno primary=nil
). È impostato correttamente con il Model.columns
metodo suggerito da srt32.
Usando tre binari puoi semplicemente digitare il nome del modello:
> User
gives:
User(id: integer, name: string, email: string, etc...)
In binari quattro, devi prima stabilire una connessione:
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 hai dimestichezza con i comandi SQL, puoi accedere alla cartella della tua app ed eseguire rails db
, che è una breve forma di rails dbconsole
. Entrerà nella shell del tuo database, che sia sqlite o mysql.
Quindi, puoi interrogare le colonne della tabella usando il comando sql come:
pragma table_info(your_table);
describe your_table;
, non perfetto ma funziona
Puoi eseguire rails dbconsole
lo strumento della riga di comando per aprire la console sqlite. Quindi digita .tables
per elencare tutte le tabelle e .fullschema
per ottenere un elenco di tutte le tabelle con nomi e tipi di colonne.
Per elencare le colonne di una tabella di solito vado con questo:
Model.column_names.sort
.
i.e. Orders.column_names.sort
L'ordinamento dei nomi delle colonne rende facile trovare ciò che stai cercando.
Per ulteriori informazioni su ciascuna delle colonne utilizzare questo:
Model.columns.map{|column| [column.name, column.sql_type]}.to_h
.
Questo fornirà un bel hash. per esempio:
{
id => int(4),
created_at => datetime
}
integrando queste utili informazioni, ad esempio usando rails console o rails dbconsole:
Lo studente è il mio modello, usando la console rails:
$ 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)
Altra opzione utilizzando SQLite tramite 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);
Infine per ulteriori informazioni.
sqlite> .help
Spero che questo ti aiuti!
Model.columns
per ottenere maggiori informazioni sulle colonne, inclusi i dati di configurazione del database.