如何使用控制台在一个命令中显示所有数据库表中的当前记录数?谢谢!
答案 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
我希望这有助于