【问题标题】:Rails: How to list database tables/objects using the Rails console?Rails:如何使用 Rails 控制台列出数据库表/对象?
【发布时间】:2011-01-07 01:47:56
【问题描述】:

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

【问题讨论】:

  • 这就是 script/dbconsole 的用途
  • 是的,这会让你进入 mysql(或其他)。出于某种奇怪的原因,我想从常规控制台中列出列/表等。我在想它可能需要定制的 ruby​​ 方法来做这样的事情。

标签: ruby-on-rails console


【解决方案1】:

您可能正在寻找:

ActiveRecord::Base.connection.tables

ActiveRecord::Base.connection.columns('projects').map(&:name)

您可能应该在 .irbrc 中用较短的语法将它们包装起来。

【讨论】:

  • 谢谢,第一个工作如我所愿。但是第二个没有 - 寻找类似的东西但没有运气。
  • ActiveRecord::Base.connection.columns("foos") 也应该工作,但它返回列对象,.map{|c| [c.name, c.type] } 最后解决了这个问题。
  • table_structure 似乎是特定于 sqlite 适配器的。
  • 对于 Rails4 使用 Model.column_names 列出表列
  • 同样在 Rails 4 中,您可以只使用 ModelName 来获取列及其数据类型的列表。
【解决方案2】:

运行这个:

Rails.application.eager_load! 

然后

ActiveRecord::Base.descendants

返回模型/表格列表

【讨论】:

    【解决方案3】:

    您可以使用rails dbconsole 查看您的rails 应用程序正在使用的数据库。这是替代答案rails db。这两个命令都将引导您进入命令行界面,并允许您使用该数据库查询语法。

    【讨论】:

      【解决方案4】:

      希望我迟来的回答能对你有所帮助。
      这将转到 rails 数据库控制台。

      rails db
      

      漂亮地打印你的查询输出

      .headers on
      .mode columns
      (turn headers on and show database data in column mode )
      

      显示表格

      .table
      

      '.help' 查看帮助。
      或者使用 SQL 语句,例如“从汽车中选择 *”

      【讨论】:

      • 'rails dbconsole' 将您置于您正在使用的任何数据库引擎的命令行解释器 (CLI) 中……以上是 SQLite 命令……例如,Postgres 将使用 '\ dt' 列出表格...
      • 有没有办法确保每次运行 rails db 时不必在 .headers 和 .more 列上应用
      • TIL。 12 年后,不知道rails db 是一回事。 lul
      【解决方案5】:

      它是一个开始,它可以列出:

      models = Dir.new("#{RAILS_ROOT}/app/models").entries
      

      再看看……

      【讨论】:

      • 通过这样做,您只需列出模型文件,如果表存在于 db 中并且模型目录中没有模型文件,该怎么办!
      【解决方案6】:

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

      ActiveRecord::Base.subclasses.map { |cl| cl.name }
      ActiveRecord::Base.subclasses.find { |cl| cl.name == "Foo" }
      

      【讨论】:

      • 还有:ActiveRecord::Base.descendants.map(&:name)
      猜你喜欢
      • 2011-07-21
      • 2016-12-28
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      相关资源
      最近更新 更多