Réponses:
Cela listera les noms de colonne d'une table
Model.column_names
e.g. User.column_names
Model.columns
fournit toutes les informations d'une table via ActiveRecord. Pour moi, c'était le seul et le plus simple moyen de gagner en confiance en ce qu'était vraiment ma clé primaire au niveau de la base de données.
Cela obtient les colonnes, pas seulement les noms de colonnes et utilise ActiveRecord :: Base :: Connection, donc aucun modèle n'est nécessaire. Pratique pour sortir rapidement la structure d'une base de données.
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
Exemple de sortie: http://screencast.com/t/EsNlvJEqM
primary
correctement l' attribut (toutes les colonnes l'ont primary=nil
). Il est défini correctement avec la Model.columns
méthode suggérée par srt32.
En utilisant les rails trois, vous pouvez simplement taper le nom du modèle:
> User
gives:
User(id: integer, name: string, email: string, etc...)
Dans les rails quatre, vous devez d'abord établir une connexion:
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...)
Si vous êtes à l'aise avec les commandes SQL, vous pouvez entrer le dossier de votre application et l'exécuter rails db
, qui est une forme brève de rails dbconsole
. Il entrera dans le shell de votre base de données, que ce soit sqlite ou mysql.
Ensuite, vous pouvez interroger les colonnes de la table à l'aide de la commande sql comme:
pragma table_info(your_table);
describe your_table;
, pas parfait mais fonctionne
Vous pouvez exécuter rails dbconsole
dans votre outil de ligne de commande pour ouvrir la console sqlite. Tapez ensuite .tables
pour lister toutes les tables et .fullschema
pour obtenir une liste de toutes les tables avec les noms et types de colonnes.
Pour lister les colonnes dans un tableau que je vais habituellement avec ceci:
Model.column_names.sort
.
i.e. Orders.column_names.sort
Le tri des noms de colonnes permet de trouver facilement ce que vous recherchez.
Pour plus d' informations sur chacune des colonnes utilisent ceci:
Model.columns.map{|column| [column.name, column.sql_type]}.to_h
.
Cela fournira un bon hachage. par exemple:
{
id => int(4),
created_at => datetime
}
en complément de ces informations utiles, par exemple en utilisant les rails console o rails dbconsole:
L'élève est mon modèle, en utilisant la console de 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)
Autre option utilisant SQLite via 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);
Enfin pour plus d'informations.
sqlite> .help
J'espère que cela t'aides!
Model.columns
pour obtenir plus d'informations sur les colonnes, y compris les données de configuration de la base de données.