Odpowiedzi:
Spowoduje to wyświetlenie nazw_kolumn z tabeli
Model.column_names
e.g. User.column_names
Model.columnszapewnia wszystkie informacje dotyczące tabeli za pośrednictwem ActiveRecord. Co najważniejsze, był to dla mnie jedyny i najłatwiejszy sposób na uzyskanie pewności co do tego, jaki naprawdę był mój klucz główny na poziomie bazy danych.
Pobiera kolumny, a nie tylko nazwy kolumn, i używa ActiveRecord :: Base :: Connection, więc żadne modele nie są potrzebne. Przydatny do szybkiego wyprowadzania struktury bazy danych.
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
Przykładowe dane wyjściowe: http://screencast.com/t/EsNlvJEqM
primarypoprawnie atrybutu (wszystkie kolumny mają primary=nil). Jest ustawiony poprawnie Model.columnsmetodą sugerowaną przez srt32.
Używając szyn numer 3, możesz po prostu wpisać nazwę modelu:
> User
gives:
User(id: integer, name: string, email: string, etc...)
Na szynach czwartych musisz najpierw nawiązać połączenie:
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...)
Jeśli dobrze znasz polecenia SQL, możesz wejść do folderu aplikacji i uruchomić rails db, co jest krótką formą rails dbconsole. Wejdzie do powłoki Twojej bazy danych, niezależnie od tego, czy jest to sqlite, czy mysql.
Następnie możesz zapytać kolumny tabeli za pomocą polecenia sql, takiego jak:
pragma table_info(your_table);
describe your_table;, nie jest idealny, ale działa
Możesz uruchomić rails dbconsolew sobie narzędzie wiersza poleceń, aby otworzyć konsolę sqlite. Następnie wpisz, .tablesaby wyświetlić wszystkie tabele i .fullschemaotrzymać listę wszystkich tabel z nazwami i typami kolumn.
Do listy kolumn w tabeli I zwykle z tym:
Model.column_names.sort.
i.e. Orders.column_names.sort
Posortowanie nazw kolumn ułatwia znalezienie tego, czego szukasz.
Aby uzyskać więcej informacji na temat każdej z kolumn użyj tego:
Model.columns.map{|column| [column.name, column.sql_type]}.to_h.
To zapewni niezły haszysz. na przykład:
{
id => int(4),
created_at => datetime
}
uzupełnienie tych przydatnych informacji, na przykład za pomocą konsoli rails lub dbconsole rails:
Student jest moim modelem, używając konsoli railsów:
$ 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)
Inna opcja używania SQLite przez Railsy:
$ 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);
Wreszcie po więcej informacji.
sqlite> .help
Mam nadzieję że to pomoże!
Model.columnsuzyskać więcej informacji o kolumnach, w tym dane konfiguracyjne bazy danych.