From: Mc Ieong Date: 2010-01-31T17:05:11+09:00 Subject: Re: parameters.. David Masover wrote: > 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 Dear David, Thank you very much for your detail explanation, and give me a lot of coding alternaties which I didn't know before. Thank you again for your help! Ieong -- Posted via http://www.ruby-forum.com/.