ActiveRecordのモデルクラスの一覧を取得する

こんにちは。一日一日暗くなるのが早くなってきました。きたけーです。

最近、「テストデータの用意」で頭の中であれこれ思案していることがあるのですが、どうにもそれを形にするためには道具が少なすぎるような気がするので、使えそうなものを少しずつ集める業を。

今日はActiveRecordのモデルクラスの一覧を取得する方法について調べました。

# Railsの場合に必要。
# Rails以外のActiveRecordをORMに使っているプロジェクトの場合は自前にrequireしてある想定
Dir.glob(File.expand_path("./app/models/*.rb", Rails.root)).each do |f|
  require f
end

# 定数オブジェクトの一覧を取得。
constants = Object.constants.map do |name|
  Object.const_get(name)
end

# この一覧からモデルクラスを絞り込む
constants.select do |c|
  c.class == Class && c < ActiveRecord::Base && !c.abstract_class?
end