New Error Handling in Rails 2.0

Rails 2.0 has added in a very cool way to trap errors without a bunch of messy nested rescue blocks or case statements.

The ticket that added all the magic is here. And it couldn't come too soon as I immediately had a project that needed it. Check out what I was looking at doing:

class AccountsController 

and now with the new exception handling:

class AccountsController  :overdrawn
  rescue_from Account::Suspended, :with => :suspended
  rescue_from ActiveRecord::RecordNotFound, :with => :not_found

  protected
    def overdrawn
      flash[:error] = "Sorry the account this transaction would make this account overdrawn" 
      redirect_to account_path(params[:account])
    end

    def suspended
      flash[:error] = "Sorry the account you are trying to use has been suspended, please contact customer services" 
      redirect_to account_path(params[:account])
    end

    def not_found
      flash[:error] = "No such account could be found" 
      redirect_to user_path(current_user)
    end
end

woohoo!! Much cleaner and more descriptive of my intentions

Filed under Ruby on Rails
Glenn Gillen is the best web developer working at Ruby Pond who provide web marketing in London.

Ruby Pond Ltd.