From: David Masover Date: 2010-01-31T16:06:51+09:00 Subject: Re: parameters.. On Sunday 31 January 2010 12:28:54 am Mc Ieong wrote: > Hi! I am a newbie in Ruby programming. I wrote the following functions > and they works fine, but it seems very stupid of not using just one > parameterized function to update the same fields(:first_name, > > :last_name), can everyone give me some hints about that ? Should be obvious, shouldn't it? def update(which_name) if request.post? if !params[:data].nil? Employee.update(params[:id], which_name => params[:data]) end end render(:nothing => true) end Remember, symbols are just objects. There's nothing special about using symbols in keyword arguments, and nothing stopping you from using other things. The only reason you never see library code doing this: Foo.bar "some option" => "some value" is that it's much less efficient than using a symbol. But there's no reason you couldn't use a variable, a number, or anything else in there -- what's important is the => operator. As an aside, you can keep your existing API if you need it: def update_first_name update :first_name end def update_last_name update :last_name end If for some reason you have a lot of these: [:first_name, :last_name].each do |which_name| define_method "update_#{which_name}" do update which_name end end