查看所有表格,来自控制台的所有记录?

时间:2010-12-31 20:49:49

标签: ruby-on-rails ruby-on-rails-3

如何使用控制台在一个命令中显示所有数据库表中的当前记录数?谢谢!

4 个答案:

答案 0 :(得分:16)

如果您已经“触及”了所有课程,但仅针对实际模型,则可以这样做:

ActiveRecord::Base.subclasses.map { |c| "#{c.name} => #{c.count}" }

如果您真的想要所有表,包括未映射到模型的连接表:

ActiveRecord::Base.connection.tables.map { |t| "#{t} => " + ActiveRecord::Base.connection.execute("select count(*) from #{t}").fetch_row.first}

答案 1 :(得分:16)

ActiveRecord::Base.connection.tables

如果您发现它有用,它将返回您拥有的表格数组。

答案 2 :(得分:1)

这可能比你希望的要长一些,但希望这会有所帮助; - )

Dir.glob('app/models/*.rb').each {|file| puts eval(File.basename(file, ".rb").classify + '.count').to_s + " #{File.basename(file, ".rb").classify.pluralize}"}

为此创建一个rake任务可能更好。

答案 3 :(得分:0)

我试图这样做,我想出了自己的方式。

我喜欢将if封装到名为维护的模型中,该模型不是活动记录模型

我的模型看起来像

class Maintenance
  def self.show_all_tables_count
    list_table_with_count = []
    ActiveRecord::Base.connection.tables.each do |table|
      unless ['ar_internal_metadata', 'schema_migrations'].include?(table)
        list_table_with_count << [name: table, count: table.singularize.camelize.constantize.count]
      end
    end
    list_table_with_count
  end
end

我希望这有助于