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

  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009
  • GavinMichaelBooth

    GavinMichael

    26 AĞUSTOS 2006
  • LatinNinja99

    LatinNinja99

    28 EKİM 2011