Module名を切り出してclass_nameを取り出す。
Qiitaに同じ内容の記事が丁度あって悲しい気分になったが、コードを書いていたので記録として残しておく。
本ブログは、備忘録という面もありますので、読まれている方は気分を害さないでいただきたいです。
動的にSQLのテーブル、カラムの別名を定義したくなり、クラス名とメソッド名を利用していたが、
app/service
配下に置かれている訳でもなく、app/service/hoge/...rb
という形でclass
が置かれているので、直接class
をそのまま取るわけにもいかないので、即興で書いていた。
サンプルコード
module Hoge class BaseService def initialize end def class_name self.class.to_s.split('::').last.underscore end end end
動作
$ Hoge::BaseService.new.class_name => "base_service"
以上になります。