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

  • cekehechu

    cekehechu

    20 HAZİRAN 2006
  • huyked

    huyked

    28 Mart 2008
  • Maya Learning Channel

    Maya Learnin

    23 HAZİRAN 2010