47400


rails において、対象クラスをベースとした継承木の、末端のクラス一覧を取得したいと思いました。これは可能でしょうか。

用途としては、 STI
と組み合わせて、実際にアプリで利用する可能性のあるサブクラスを自動で列挙したいな、と思い、今回のケースでは継承木の末端のみしか使わない想定なので、この質問をいたしました。

またさらに、今回 STI のサブクラスは、 STI のベースクラスの中に定義してあり、 Autoload の問題などはないはずです。


CC BY-SA 4.0
2018-08-10T01:41:29.197
47399
2018-08-10T01:50:16.417
2018-08-10T01:48:29.350
754
754
question
ruby-on-rails ruby
rails で対象クラスの継承木の末端のクラスたちを取得したい


基本的には [`ObjectSpace`](https://docs.ruby-
lang.org/ja/latest/class/ObjectSpace.html)のメソッドを駆使すれば可能ですが、 Rails であれば
ActiveSupport が
[`Class#subclasses`](https://api.rubyonrails.org/classes/Class.html#method-i-
subclasses) や
[`Class#descendants`](https://api.rubyonrails.org/classes/Class.html#method-i-
descendants) を提供しているのでそれを使えばよいでしょう。


CC BY-SA 4.0
2018-08-10T01:50:16.417
47400
2018-08-10T01:50:16.417
17037
47399
answer