136 votes

ActiveRecord : Lister les colonnes d'une table depuis la console

Je sais que vous pouvez demander à ActiveRecord de lister les tables dans la console en utilisant :

ActiveRecord::Base.connection.tables

Existe-t-il une commande permettant de lister les colonnes d'un tableau donné ?

253voto

Pravin Points 2741

Ceci listera les noms des colonnes d'une table.

Model.column_names
e.g. User.column_names

67voto

Aaron Henderson Points 511

Elle récupère les colonnes, pas seulement les noms des 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

23voto

Yule Points 3497

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...)

7voto

gm2008 Points 257

Si vous êtes à l'aise avec les commandes SQL, vous pouvez entrer dans le dossier de votre application et exécuter rails db qui est une forme abrégée de rails dbconsole . Il entrera dans le shell de votre base de données, qu'elle soit sqlite ou mysql.

Ensuite, vous pouvez interroger les colonnes de la table en utilisant la commande sql suivante :

pragma table_info(your_table);

2voto

codeepic Points 1573

Vous pouvez exécuter rails dbconsole dans votre outil de ligne de commande pour ouvrir la console sqlite. Puis tapez .tables pour énumérer tous les tableaux et .fullschema pour obtenir une liste de toutes les tables avec les noms et les types de colonnes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X