Rails:如何使用Rails控制台列出数据库表/对象?

rtf*_*inc 139 console ruby-on-rails

我想知道您是否可以在Rails控制台中列出/检查可用的数据库/对象.我知道你可以使用其他工具看到它们,我只是很好奇.谢谢.

cwn*_*nja 281

你可能正在寻求:

ActiveRecord::Base.connection.tables
Run Code Online (Sandbox Code Playgroud)

ActiveRecord::Base.connection.columns('projects').map(&:name)
Run Code Online (Sandbox Code Playgroud)

你可能应该在你的内部用更短的语法包装它们.irbrc.

  • `table_structure`似乎特定于sqlite适配器. (27认同)
  • ActiveRecord :: Base.connection.columns("foos")也应该可以工作,但它返回列对象,.map {| c | 最后[c.name,c.type]}修复了这个问题. (12认同)
  • 谢谢,第一个像我想要的那样工作.但第二个没有 - 寻找类似但没有运气的东西. (3认同)
  • 对于Rails4,使用Model.column_names列出表列 (3认同)
  • 同样在Rails 4中,您可以仅使用_ModelName_来获取列及其数据类型的列表。 (3认同)

ham*_*ham 20

我希望我的迟到答案可以提供一些帮助.
这将转到rails数据库控制台.

rails db
Run Code Online (Sandbox Code Playgroud)

漂亮打印您的查询输出

.headers on
.mode columns
(turn headers on and show database data in column mode )
Run Code Online (Sandbox Code Playgroud)

显示表格

.table
Run Code Online (Sandbox Code Playgroud)

'.help'看到帮助.
或者使用"Select*from cars"等SQL语句

  • 'rails dbconsole'让你进入你正在使用的任何数据库引擎的命令行解释器(CLI)...上面是SQLite命令...例如,Postgres将使用'\ dt'列出表... (5认同)

Dom*_*omQ 7

要获取所有模型类的列表,您可以使用ActiveRecord::Base.subclasseseg

ActiveRecord::Base.subclasses.map { |cl| cl.name }
ActiveRecord::Base.subclasses.find { |cl| cl.name == "Foo" }
Run Code Online (Sandbox Code Playgroud)

  • 另外:`ActiveRecord::Base.descendants.map(&:name)` (2认同)