Odpowiedzi:
Spowoduje to wyświetlenie nazw_kolumn z tabeli
Model.column_names
e.g. User.column_names
Model.columns
zapewnia 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
primary
poprawnie atrybutu (wszystkie kolumny mają primary=nil
). Jest ustawiony poprawnie Model.columns
metodą 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 dbconsole
w sobie narzędzie wiersza poleceń, aby otworzyć konsolę sqlite. Następnie wpisz, .tables
aby wyświetlić wszystkie tabele i .fullschema
otrzymać 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.columns
uzyskać więcej informacji o kolumnach, w tym dane konfiguracyjne bazy danych.