1. ホーム
  2. ruby-on-rails

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

2023-07-07 06:18:50

質問

Ruby-on-Railsでクラスの名前文字列からインスタンス化する方法は?

例えば、データベースに "ClassName" や "my_super_class_name" のようなフォーマットでクラス名が登録されています。

そこからどのようにオブジェクトを作成するのでしょうか?

解決方法です。

自分で探していたのですが、見つからなかったので、ここにあります。 Ruby-on-RailsのAPIメソッド

name = "ClassName"
instance = name.constantize.new  

整形されていない状態でも、文字列メソッドで .分類

name = "my_super_class"
instance = name.classify.constantize.new

もちろん、これはあまり「Rails的」ではないかもしれませんが、目的は達成されています。

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

klass = Object.const_get "ClassName"

クラスメソッドについて

class KlassExample
    def self.klass_method
        puts "Hello World from Class method"
    end
end
klass = Object.const_get "KlassExample"
klass.klass_method

irb(main):061:0> klass.klass_method
Hello World from Class method