在ruby中不使用eval将字符串转换为类名?

时间:2014-05-13 16:55:50

标签: ruby string class eval

我有这样的事情:

string = "Post"

我想将字符串转换为类名文字。我使用这样的eval来转换字符串:

eval(string) #=> Post

作为一名javaScript开发人员,我试图避免使用eval。在Ruby中有更好的方法吗?或者使用eval是处理此问题的首选方式?

2 个答案:

答案 0 :(得分:28)

你可以尝试

class Post
end

Object.const_get("Post")

返回Post

答案 1 :(得分:21)

使用Module.const_get

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

如果你在rails上下文中,你也可以在字符串

上使用`#constantize方法
clazz = string.constantize # => Fixnum