Get class instance from name?

What's a good way to get at a Class instance, from a string containing its name?

For example, say I have a string "Customer", and want to call Customer.my_class_method(). I realise I could do something like:

   # class_name = "Customer"
   result = eval("#{class_name}.my_class_method()")

....but it smells like a hack to me, and so I suspect there's a more "proper" way to get at the object I need...

Any pointers would be much appreciated!

Cheers,
   Kevin

You're looking for Module.const_get(). Use it to get the class object, then call the method.

Hope that helps.

James Edward Gray II

···

On Apr 25, 2005, at 7:04 PM, Kevin McConnell wrote:

What's a good way to get at a Class instance, from a string containing its name?

For example, say I have a string "Customer", and want to call Customer.my_class_method(). I realise I could do something like:

  # class_name = "Customer"
  result = eval("#{class_name}.my_class_method()")

....but it smells like a hack to me, and so I suspect there's a more "proper" way to get at the object I need...

Any pointers would be much appreciated!

James Edward Gray II wrote:

You're looking for Module.const_get(). Use it to get the class object, then call the method.

Yep, that's exactly what I needed.

Thanks!