Antworten:
Dadurch werden die Spaltennamen aus einer Tabelle aufgelistet
Model.column_names
e.g. User.column_names
Model.columns
bietet alle Informationen für eine Tabelle über ActiveRecord. Entscheidend für mich war, dass dies der einzige und einfachste Weg war, Vertrauen in meinen Primärschlüssel auf Datenbankebene zu gewinnen.
Dadurch werden die Spalten und nicht nur die Spaltennamen abgerufen und ActiveRecord :: Base :: Connection verwendet, sodass keine Modelle erforderlich sind. Praktisch für die schnelle Ausgabe der Struktur einer Datenbank.
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
Beispielausgabe: http://screencast.com/t/EsNlvJEqM
primary
Attribut auf diese Weise nicht richtig festgelegt (alle Spalten haben primary=nil
). Es wird mit der Model.columns
von srt32 vorgeschlagenen Methode korrekt eingestellt.
Mit Schienen drei können Sie einfach den Modellnamen eingeben:
> User
gives:
User(id: integer, name: string, email: string, etc...)
In Schienen vier müssen Sie zuerst eine Verbindung herstellen:
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...)
Wenn Sie mit SQL-Befehlen vertraut sind, können Sie den Ordner Ihrer App eingeben und ausführen rails db
. Dies ist eine Kurzform von rails dbconsole
. Es wird in die Shell Ihrer Datenbank eingegeben, egal ob es sich um SQLite oder MySQL handelt.
Anschließend können Sie die Tabellenspalten mit dem Befehl sql wie folgt abfragen:
pragma table_info(your_table);
describe your_table;
, nicht perfekt, aber funktioniert
Sie können rails dbconsole
in Ihrem Befehlszeilentool ausführen , um die SQLite-Konsole zu öffnen. Geben Sie dann ein, um alle Tabellen .tables
aufzulisten und .fullschema
eine Liste aller Tabellen mit Spaltennamen und -typen zu erhalten.
Um die Spalten in einer Tabelle aufzulisten, gehe ich normalerweise folgendermaßen vor :
Model.column_names.sort
.
i.e. Orders.column_names.sort
Durch Sortieren der Spaltennamen können Sie leicht finden, wonach Sie suchen.
Weitere Informationen zu den einzelnen Spalten finden Sie unter :
Model.columns.map{|column| [column.name, column.sql_type]}.to_h
.
Dies wird einen schönen Hash liefern. beispielsweise:
{
id => int(4),
created_at => datetime
}
Ergänzen Sie diese nützlichen Informationen, z. B. mithilfe der Rails-Konsole oder der Rails-Datenbankkonsole:
Student ist mein Model mit Rails-Konsole:
$ 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)
Andere Option mit SQLite über 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);
Zum Schluss noch mehr Informationen.
sqlite> .help
Hoffe das hilft!
Model.columns
, um weitere Informationen zu den Spalten einschließlich der Datenbankkonfigurationsdaten zu erhalten.