Appreciate the effort, but the point has been lost. Don't focus on the 
hash or mass assignment, that was just a device to create an example.

The question is whether there's a shorter way to do this:

  my_object.send(:instance_variable_set, "@#{iname}", ivalue)

In another language I used, I could simply do the equivalent of

  myobject.iname = ivalue

that's because the syntax was like this
  #myobject->#iname = ivalue

Where # denotes a local var, so it was obvious to the parser that #iname 
was not a method name, whereas with Ruby it's not obvious.

I was hoping in Ruby that at least this was possible:

  myobject.send(iname) = ivalue
  --or--
  myobject.send(iname, ivalue)

but that doesn't work. I could maybe force it to work by manually 
creating setter methods, but that's not an elegant solution either, I'd 
rather have the occassional use of instance_variable_set than craft 
setters.

Anyway, not a biggie, just a curiosity.

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