SORU
12 EYLÜL 2010, Pazar


Raylar denetleyicisi tüm özel durumları yakalamak

Orada bir şekilde bu gibi raylar denetleyicisi tüm uncatched istisnaları yakalamak için

def delete
  schedule_id = params[:scheduleId]
  begin
    Schedules.delete(schedule_id)
  rescue ActiveRecord::RecordNotFound
    render :json => "record not found"
  rescue ActiveRecord::CatchAll
    #Only comes in here if nothing else catches the error
  end
  render :json => "ok"
end

Teşekkür ederim

CEVAP
21 Temmuz 2011, PERŞEMBE


Ayrıca rescue_from yöntemi tanımlayabilirsiniz.

class ApplicationController < ActionController::Base
  rescue_from ActionController::RoutingError, :with => :error_render_method

  def error_render_method
    respond_to do |type|
      type.xml { render :template => "errors/error_404", :status => 404 }
      type.all  { render :nothing => true, :status => 404 }
    end
    true
  end
end

Amacınız ne bağlı olarak, her kumanda için ayrı ayrı DEĞİL, özel durumları göz önünde bulundurmak isteyebilirsiniz. Bunun yerine, özel durumlar için yanıtları tutarlı bir şekilde yönetmek için exception_handler mücevher gibi bir şey kullanın. Bir bonus olarak, bu yaklaşım aynı zamanda katman katman oluşan özel durumlar, uygulama görmüyor isteği ayrıştırma veya veritabanı bağlantı hataları gibi işleyecektir. exception_notifier gem de ilginizi çekecektir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blunty

    Blunty

    13 Mart 2006
  • Friday Night Cranks

    Friday Night

    27 Mayıs 2007
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008