ActiveRecord:从控制台列表中列出列
我知道你可以让ActiveRecord在控制台中列出表格,使用:
ActiveRecord::Base.connection.tables 有一个命令可以列出给定表中的列吗?
这将列出一个表中的column_names
 Model.column_names eg User.column_names 
这会得到列,而不仅仅是列名,并使用ActiveRecord :: Base :: Connection,所以不需要模型。 方便快速输出数据库的结构。
 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 
示例输出: http : //screencast.com/t/EsNlvJEqM
使用rails三,你可以input模型名称:
 > User gives: User(id: integer, name: string, email: string, etc...) 
在第四轨中,您需要先build立连接:
 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...) 
 如果您对SQL命令感到满意,则可以input应用程序的文件夹并运行rails db ,这是一个简单的rails dbconsoleforms。 它会进入你的数据库的shell,无论是sqlite还是mysql。 
然后,你可以使用sql命令来查询表列:
 pragma table_info(your_table); 
 你可以在你的命令行工具中运行rails dbconsole来打开sqlite控制台。 然后input.fullschema来列出所有表和.fullschema以获得列名和types的所有表的列表。 
- 
要列出一个表中的列,我通常会这样做: 
 Model.column_names.sort。
 ie Orders.column_names.sort对列名进行sorting可以轻松find要查找的内容。 
- 
有关每个列的更多信息,请使用以下命令: 
 Model.columns.map{|column| [column.name, column.sql_type]}.to_hModel.columns.map{|column| [column.name, column.sql_type]}.to_h。
这将提供一个不错的散列。 例如:
 { id => int(4), created_at => datetime } 
对于一个更紧凑的格式,lessinput只是:
 Portfolio.column_types