1. ホーム
  2. ruby

[解決済み] Ruby で文字列名からクラスインスタンスを作成するには?

2022-06-29 11:23:37

質問

私はクラスの名前を持っており、私はそのクラスのスキーマに存在する各レイル属性を通してループすることができるように、そのクラスのインスタンスを作成したいと思います。

どのようにすればよいのでしょうか。

  1. チェックしたいクラスの名前を文字列として持っています。
  2. クラスのインスタンスを作成する必要があると思います。
  3. その属性をループし、それらを表示します。

どのように解決するのですか?

railsでは、こうすればいいのです。

clazz = 'ExampleClass'.constantize

純粋なルビーで

clazz = Object.const_get('ExampleClass')

モジュールと一緒に

module Foo
  class Bar
  end
end

であれば

> clazz = 'Foo::Bar'.split('::').inject(Object) {|o,c| o.const_get c}
  => Foo::Bar 
> clazz.new
  => #<Foo::Bar:0x0000010110a4f8>