web-dev-qa-db-ja.com

Rubyでevalを使用せずに文字列をクラス名に変換しますか?

私はこのようなものを持っています:

string = "Post"

文字列をクラス名リテラルに変換したいと思います。私はこのようなevalを使用して文字列を変換します:

eval(string) #=> Post

JavaScript開発者である私は、evalを避けようとしています。 Rubyでこれを行うより良い方法はありますか?または、evalを使用してこれを処理する好ましい方法ですか?

11
Stratus3D

あなたが試すことができます

class Post
end

Object.const_get("Post")

Postクラスを返します

29
MxLDevs

Module.const_get を使用します

string = "Fixnum"
clazz = Object.const_get(string)
clazz.name # => "Fixnum"

Railsコンテキストにいる場合は、文字列に対して `#constantizeメソッドを使用することもできます

clazz = string.constantize # => Fixnum
23
Brian Samson