Rails:如何使用 Rails 控制台列出数据库表/对象?
Posted
技术标签:
【中文标题】Rails:如何使用 Rails 控制台列出数据库表/对象?【英文标题】:Rails: How to list database tables/objects using the Rails console? 【发布时间】:2011-01-07 01:47:56 【问题描述】:我想知道您是否可以在 Rails 控制台中列出/检查哪些数据库/对象可供您使用。我知道您可以使用其他工具看到它们,我只是好奇。 谢谢。
【问题讨论】:
这就是 script/dbconsole 的用途 是的,这会让你进入 mysql(或其他)。出于某种奇怪的原因,我想从常规控制台中列出列/表等。我在想它可能需要定制的 ruby 方法来做这样的事情。 【参考方案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)
以上是关于Rails:如何使用 Rails 控制台列出数据库表/对象?的主要内容,如果未能解决你的问题,请参考以下文章