ActiveRecord: liste les colonnes dans la table de la console

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

ActiveRecord::Base.connection.tables 

Existe-t-il une commande qui listerait les colonnes dans une table donnée?

Cela listera les column_names d’une table

 Model.column_names eg User.column_names 

Cela récupère 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 firebase database.

 ActiveRecord::Base.connection.tables.each do |table_name| puts table_name ActiveRecord::Base.connection.columns(table_name).each {|c| puts "- #{c.name}: #{c.type.to_s} #{c.limit.to_s}"} end 

Exemple de sortie: http://screencast.com/t/EsNlvJEqM

En utilisant rails trois, vous pouvez simplement taper le nom du modèle:

 > User gives: User(id: integer, name: ssortingng, email: ssortingng, 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: ssortingng, email: ssortingng, etc...) 

Si vous êtes à l’aise avec les commandes SQL, vous pouvez entrer le dossier de votre application et exécuter rails db , qui est une forme brève de rails dbconsole . Il va entrer dans le shell de votre firebase database, que ce soit sqlite ou mysql.

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

 pragma table_info(your_table); 

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

  • Pour lister les colonnes d’un tableau, je vais généralement avec ceci:
    Model.column_names.sort .
    ie Orders.column_names.sort

    Le sorting des noms de colonnes facilite la recherche de ce que vous recherchez.

  • Pour plus d’informations sur chacune des colonnes, utilisez ceci:
    Model.columns.map{|column| [column.name, column.sql_type]}.to_h Model.columns.map{|column| [column.name, column.sql_type]}.to_h .

Cela fournira un bon hachage. par exemple:

 { id => int(4), created_at => datetime } 

Pour un format plus compact et moins typé,

 Portfolio.column_types