Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Getting Object From String?

68 views
Skip to first unread message

Hunter's Lists

unread,
Dec 14, 2005, 5:10:35 PM12/14/05
to
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!


Eero Saynatkari

unread,
Dec 14, 2005, 5:19:07 PM12/14/05
to

# This takes into account nested class names
@model = params[:modelname].split('::').inject(Object) {|parent, klass|
parent.const_get klass}

> Thanks!


E

--
Posted via http://www.ruby-forum.com/.


James Edward Gray II

unread,
Dec 14, 2005, 5:19:24 PM12/14/05
to
On Dec 14, 2005, at 4:10 PM, 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)

Try changing the last line to:

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

Hope that helps.

James Edward Gray II


0 new messages