"heinous (sent by Nabble.com)" <lists / nabble.com> wrote in message 
news:3440567.post / talk.nabble.com...
>
> This may be a more generic Ruby question, so I'm going to ask on the Ruby
> forum, but I'm trying to figure out if there is a way to pass in the 
> string
> value of a variable as the name of a method.
>
> For example, I would like to do something like:
>
>  def sort_obj_by_uid(objects,@attr)
>    @tmparray = Array.new
>    @tmphash = Hash.new
>    for object in @objects
>      if ! @tmphash.has_key?(object. / attr.to_s)
>        @tmphash[object. / attr.to_s] = Array.new
>      end
>      @tmphash[object. / attr.to_s].push(object)
>    end
>  end

You cannot use @attr, @attr is reserved for instance variables.  Also, it's 
a bad idea to use instance variables (@tmparray, @tmphash) as temporary 
variables.

> Where the method name is the @attr value.

It's a one liner:

objects.sort_by {|o| o.send(attr)}

Kind regards

    robert