如何在Rails控制台中更清晰输出原生SQL/ActiveRecord查询结果?
在Rails控制台中整洁输出SQL/ActiveRecord查询结果
当然可以,下面几种方法能帮你得到简洁的表格化输出:
1. 手动格式化原生SQL结果
执行原生SQL后,先通过to_a剥离元数据,只保留纯数据数组,再自己写个简单方法格式化输出:
# 先拿到纯数据 results = ActiveRecord::Base.connection.exec_query("SELECT * from categories_pages;").to_a # 定义格式化方法(直接在控制台里敲就行) def print_table(results) return if results.empty? headers = results.first.keys # 计算每列需要的宽度,保证内容不挤在一起 column_widths = headers.map { |h| [h.length, results.map { |row| row[h].to_s.length }.max].max } # 打印表头 puts headers.each_with_index.map { |h, i| h.ljust(column_widths[i]) }.join(" ") # 打印每行数据 results.each do |row| puts headers.each_with_index.map { |h, i| row[h].to_s.ljust(column_widths[i]) }.join(" ") end end # 调用方法输出表格 print_table(results)
2. 用ActiveRecord模型简化操作
如果有对应的模型(比如CategoriesPage),直接用模型查询更方便:
# 只取需要的字段,输出数组 CategoriesPage.pluck(:category_id, :page_id) # 或者自定义格式输出 CategoriesPage.select(:category_id, :page_id).each do |item| puts "#{item.category_id.ljust(40)} #{item.page_id}" end
3. 用第三方gem自动格式化
如果经常需要表格输出,试试hirb gem:
- 先在Gemfile里加一行:
gem 'hirb'
- 执行
bundle install,然后在Rails控制台里启用:
require 'hirb' Hirb.enable
之后不管是执行CategoriesPage.all还是原生SQL查询,结果都会自动变成整洁的表格。
内容的提问来源于stack exchange,提问作者stevec
相关产品推荐
相关产品推荐

