ダイナミックにインスタンス化
Railsのメモ.
文字列(クラス名)からインスタンス化させようとしたとき,Rails上ならこれでいける.
cls = "ClassName".constantize
obj = cls.new
# とか,
module_name = "ModuleName"
class_name = "ClassName"
cls = "#{module_name}::#{class_name}".constantize
obj = cls.new
といける.
constantizeを覗いてみると,Object.module_eval() をしていた. 結局evalですよね.evalしないでうまくやる方法を探していたんですがね. もちろん,ハッシュでクラスを定義しちゃうっていうのが楽なんですがーちょっと数が多くてね.
Comments