Home

Instantiate a Class from a String in Rails

Rails classes need to be called dynamically sometimes. Learn how to do it using the constantize inflector.

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.

Let's Connect

Keep Reading

Access A Deleted Class In A Rails Migration

Sometimes you need to get to a class that you have deleted or renamed within a migration file. Here's how you do it.

Mar 13, 2016

Why I Don't Use has_and_belongs_to_many in Rails

The magic of Rails makes it easy to create simple many-to-many relationships, but I almost never use it, and here's why.

Mar 31, 2015

How to Transition from CarrierWave to Dragonfly

It can be a process to move away from CarrierWave once you're already using it. Here's a step-by-step process to make it easy to transition to Dragonfly.

Jan 02, 2015