You should move most conditions to validations. That IMHO is the best way to refactor this.
Dheeraj Kumar On Tuesday 7 February 2012 at 12:19 AM, Dave Aronson wrote: > On Mon, Feb 6, 2012 at 13:16, regedarek <[email protected] > (mailto:[email protected])> wrote: > > > How to refactor its right way? > > Without delving too deep into the actual logic.... > > You've got a bunch of "unless this else that". Generally speaking, if > you're using an "else", using "unless" makes it much more difficult > for a reader to follow, because of the multiple negations. With an > "else", stick to "if". > > Other than that, I'd suggest organizing it along the lines of: > > if some error condition > complain about this one > elsif another error condition > complain about that one > elsif some other error condition > complain about the other one > # lather, rinse, repeat > else # all is happy! > do what the user was trying to do > end > > Now, within the "do what the user was trying to do", you may wind up > finally being able to calculate or retrieve some things you need to > analyze further error conditions. There are several approaches. You > can just nest these again, within reason, or make the happy path a > method call, wherein you repeat that pattern. > > -Dave > > -- > Dave Aronson: Available Cleared Ruby on Rails Freelancer > (NoVa/DC/Remote) -- see www.DaveAronson.com (http://www.DaveAronson.com), and > blogs at > www.Codosaur.us (http://www.Codosaur.us), www.Dare2XL.com > (http://www.Dare2XL.com), www.RecruitingRants.com > (http://www.RecruitingRants.com) > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to [email protected] > (mailto:[email protected]). > To unsubscribe from this group, send email to > [email protected] > (mailto:[email protected]). > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

