Convert string to class name without using eval in ruby?
16,578
Solution 1
You can try
class Post
end
Object.const_get("Post")
Which returns the Post
class
Solution 2
Use Module.const_get
string = "Fixnum"
clazz = Object.const_get(string)
clazz.name # => "Fixnum"
If you are in a rails context, you can also use the `#constantize method on string
clazz = string.constantize # => Fixnum
Author by
Stratus3D
Erlang, Elixir, Ruby, Lua and JavaScript developer. Website Github Profile
Updated on June 09, 2022Comments
-
Stratus3D almost 2 years
I have something like this:
string = "Post"
I would like to convert the string to a class name literal. I use eval like this to convert the string:
eval(string) #=> Post
Being a javaScript developer I try to avoid eval. Is there a better way of doing this in Ruby? Or is using eval the preferred way of handling this?
-
vajapravin over 9 yearsconstantize is best than others