[Refactor]Reserwavtion system - action book

Hi, I have in my controller action book, but it looks ugly. How to
refactor
its right way?

def book

On Mon, Feb 6, 2012 at 13:16, regedarek [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 A.: Available Cleared Ruby on Rails Freelancer
(NoVa/DC/Remote) – see www.DaveAronson.com, and blogs at
www.Codosaur.us, www.Dare2XL.com, www.RecruitingRants.com

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

Dheeraj K.

delegating some logic in to models methods might help.

On Mon, Feb 6, 2012 at 13:53, Dheeraj K. [email protected]
wrote:

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

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


Dave A.: Available Cleared Ruby on Rails Freelancer
(NoVa/DC/Remote) – see www.DaveAronson.com, and blogs at
www.Codosaur.us, www.Dare2XL.com, www.RecruitingRants.com

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs