Newbie: Make this code better?

Hi all

Another newbie question. I have the following code:

private
def model_obj_name
CountriesController.controller_class_name.underscore.sub(/_controller$/,
‘’).singularize
end

I use it quite a lot, and it’s always the same, so I’d like to be
executed only once and then stored somewhere and every following time it
just returns this value.

I thought about putting this stuff into the initialize body and creating
an attr_accessor, but then it would be public, right? But I need it
private…

Any cool solution? Thanks :slight_smile:
Josh

hmmm, class or instance variable / cached function?

Have you looked at http://rubymentor.rubyforge.org ?

Aur

Joshua M. wrote:

I use it quite a lot, and it’s always the same, so I’d like to be

What about this?

private
def model_obj_name
@name ||=
CountriesController.controller_class_name.underscore.sub(/_controller$/,
‘’).singularize
end

What’s wrong with using CountriesController#controller_name?

http://api.rubyonrails.org/classes/ActionController/Base.html#M000256
Converts the class name from something like
“OneModule::TwoModule::NeatController” to “neat”.