文字列をクラス名に変換するにはどうすればよいですか? ただし、そのクラスが既に存在する場合のみです。
Amber が既にクラスである場合、次の方法で文字列からクラスに取得できます。
Object.const_get("Amber")
または(Railsで)
"Amber".constantize
ただし、NameError: uninitialized constant Amber
Amber がまだクラスでない場合、これらのいずれも失敗します。
私の最初の考えは、defined?
メソッドを使用することですが、既に存在するクラスと存在しないクラスを区別しません。
>> defined?("Object".constantize)
=> "method"
>> defined?("AClassNameThatCouldNotPossiblyExist".constantize)
=> "method"
では、クラスを変換する前に、文字列がクラスに名前を付けているかどうかをテストするにはどうすればよいでしょうか? (さて、NameError エラーをキャッチするためにbegin
/ブロックはどうですか? あまりにも醜いですか? 私は同意します...)rescue