モジュールの部分はいらないんだけどな…というときに文字列処理をしなくても用意してくれている。
環境
$ bin/rails -v Rails 6.0.3.1
利用例
今回サンプルとして扱うのは以下のようなクラス
module Hoge module Piyo class Test def initialize(test: nil) @test = test end end end end
newするときは以下のようにする
::Hoge::Piyo::Test.new
クラス名だけを取り出したい場合
demodulize
を使う。ただし Class
オブジェクトでは使えないので、 to_s
などをしてあげる必要がある。
object = ::Hoge::Piyo::Test.new object.class.to_s.demodulize # => "Test"
モジュール部分だけを取り出したい場合
deconstantize
を使う。こちらも Class
オブジェクトでは使えないので注意。
object = ::Hoge::Piyo::Test.new object.class.to_s.deconstantize # => "Hoge::Piyo"
参考リンク
[Rails5] Active Support::Inflectorの便利な活用形メソッド群|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社