我知道您可以让ActiveRecord使用以下命令在控制台中列出表:
ActiveRecord::Base.connection.tables
是否有一个命令可以列出给定表中的列?
答案 0 :(得分:193)
这将列出表
中的column_namesModel.column_names
e.g. User.column_names
答案 1 :(得分:41)
这将获取列,而不仅仅是列名,并使用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
答案 2 :(得分:20)
使用rails 3,您只需输入型号名称:
> User
gives:
User(id: integer, name: string, email: string, etc...)
在rails 4中,您需要先建立连接:
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...)
答案 3 :(得分:5)
如果您对SQL命令感到满意,可以输入应用程序的文件夹并运行rails db
,这是rails dbconsole
的简要形式。它将进入数据库的shell,无论是sqlite还是mysql。
然后,您可以使用sql命令查询表列,如:
pragma table_info(your_table);
答案 4 :(得分:2)
您可以在命令行工具中运行rails dbconsole
以打开sqlite控制台。然后输入.tables
列出所有表,并输入.fullschema
以获取包含列名和类型的所有表的列表。
答案 5 :(得分:0)
要列出表格中的列,我通常会这样:
Model.column_names.sort
。
i.e. Orders.column_names.sort
对列名进行排序可以轻松找到您要查找的内容。
有关每个列的更多信息,请使用此选项:
Model.columns.map{|column| [column.name, column.sql_type]}.to_h
。
这将提供一个很好的哈希。 例如:
{
id => int(4),
created_at => datetime
}
答案 6 :(得分:0)
对于更紧凑的格式,更少打字:
Portfolio.column_types
答案 7 :(得分:0)
补充这些有用的信息,例如使用rails console o rails dbconsole:
学生是我的模型,使用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)
通过Rails使用SQLite的其他选项:
$ 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);
最后了解更多信息。
sqlite> .help
希望这会有所帮助!