ダイナミックにインスタンス化

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しないでうまくやる方法を探していたんですがね. もちろん,ハッシュでクラスを定義しちゃうっていうのが楽なんですがーちょっと数が多くてね.

[RubyonRails]

2008/04/23 23:39 | Comments(0)

Comments

Comment Form