rails で対象クラスの継承木の末端のクラスたちを取得したい

投稿者: Anonymous

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

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

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

解決

基本的には ObjectSpaceのメソッドを駆使すれば可能ですが、 Rails であれば ActiveSupport が Class#subclassesClass#descendants を提供しているのでそれを使えばよいでしょう。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *