==============================
Rescue and Redirects
==============================

There are a lot of times that you'll find when you perform a query on 
your database that no records are found.  Some people that are new to 
rails might do something like:

if model.find(:all).empty?
  .. do something else
else
  .. continue with our program ..
end

But, this doesn't really help you when you have a very extensive 
routine.  It also doesn't really handle ActiveRecord returns or even 
logging the errors to your logs.

This is where rescue is a great feature that rails has implemented into 
it.  How do you use it?  Here's an example:

def get_products(product_id)
  begin
    @products = Product.find(product_id)
  rescue ActiveRecord::RecordNotFound
    logger.error("#{product_id} in products wasn't found from 
get_products."
    redirect_to :action => :index
  else
    .. continue with your routine
  end
end

So, what did we do here?

Pretty simple when you look deeply at it.  We have a routine that tries 
to find a product by a product_id.  Rescue occurs if no record is found 
from ActiveRecord and a logger error is placed in your log telling you 
what occurred, so you can later review and fix (if it needs fixing) the 
error.  It then redirects your user back to the index (or you can 
specify some other redirect (redirect_to root_url OR redirect_to 
controllername_path, etc.).  If the rescue doesn't occur, the method 
continues on and processes your routine.

By using rescue you don't have to interfere greatly with your model's 
core methods.  Adding too much logic to your model methods might not be 
a good thing.  There are times when it might be necessary (methods that 
involve rake tasks etc. come to mind) but overall, rescue is something 
everyone new to rails should learn and implement into their apps.

I hope this helps.

Thanks.
-- 
Posted via http://www.ruby-forum.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 rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to