Cobwwweb logo

Instantiate a Class from a String in Rails

Nov 20, 2014 Ruby on Rails

Sometimes you want your class names to be dynamic. Rails has a nice constantize inflector that makes this easy.

In the simplest of examples, let's just say you have a "post" string and you want to load the Post class from it. Something like the following should work great.

str = "post"
new_class_instance = str.constantize.new

We can get a little wild. Let's say you have a multi-word string and want to constantize and then instantiate it.

str = "posts controller"
new_class_instance = str.titleize.gsub(/\ /, '').constantize.new

Essentially, this just shows you want a properly-cased string (the string equivalent of the class name) before you call constantize.

Did you learn something or find this article interesting?

If so, why not

Want to receive exactly one email every month with new articles, tools, and references I've discovered? Sign up below. (More info here.)