[Refactor]Reserwavtion system - action book

Hi, I have in my controller action book, but it looks ugly. 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

You should move most conditions to validations. That IMHO is the best way to refactor this.

Dheeraj Kumar

delegating some logic in to models methods might help.

D'oh, you're right, I totally glossed over that it was in his *controller*! Yeah, this is a canonical time when the Zen master should whack the student upside the head, and remind him of the mantra, "skinny controller, fat model".... :wink:

-Dave