😊

ActiveRecordを用いて全テーブルのレコード数を取得する

2021/12/12に公開

全テーブルのレコード数を取得したかったので、下記のように ActiveRecord を使って取得した

tables = ActiveRecord::Base.connection.tables

models = tables.map(&:classify).map(&:safe_constantize).compact

models.each do |model|
  puts "#{model}: #{model.count}"
end

ActiveRecord::Base.connection.tablesでテーブル名が入った配列を取得します
tables.map(&:classify)でテーブル名からモデル名へ変換
map(&:safe_constantize)で文字列をクラス化、クラスが見つからない場合は nil を返すのでcompactで nil を除外します

参考

Discussion