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

···

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

hmmm, class or instance variable / cached function?

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

Aur

···

On 3/27/07, Joshua Muheim <forum@josh.ch> wrote:

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

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

Joshua Muheim wrote:

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

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?

Converts the class name from something like
"OneModule::TwoModule::NeatController" to "neat".

···

On Mar 27, 7:26 am, Joshua Muheim <f...@josh.ch> wrote:

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

--
Posted viahttp://www.ruby-forum.com/.