Getting Object From String?


#1

Howdy,

I have a class called ‘NewsItem’.

In one of my Rails classes, I have a place to pass in a string (from a
HTTP
parameter). That string’s value is ‘NewsItem’, the class name.

How can I convert that to use as the class?

I.e.

@model = params[:modelname]
@items = @model.find(:all)

This doesn’t work. I was hoping it would work the same way as:
@items = NewsItem.find(:all)

How can I pull this off?

Thanks!


#2

Hunter’s Lists wrote:

Howdy,

I have a class called ‘NewsItem’.

In one of my Rails classes, I have a place to pass in a string (from a
HTTP
parameter). That string’s value is ‘NewsItem’, the class name.

How can I convert that to use as the class?

I.e.

@model = params[:modelname]
@items = @model.find(:all)

This doesn’t work. I was hoping it would work the same way as:
@items = NewsItem.find(:all)

How can I pull this off?

This takes into account nested class names

@model = params[:modelname].split(’::’).inject(Object) {|parent, klass|
parent.const_get klass}

Thanks!

E


#3

On Dec 14, 2005, at 4:10 PM, Hunter’s Lists wrote:

I.e.

@model = params[:modelname]
@items = @model.find(:all)

Try changing the last line to:

@items = Object.const_get(@model).find(:all)

Hope that helps.

James Edward G. II