pernah mengalami error yang seperti ini ?
ActiveRecord::RecordNotFound in UsersController#blah
Couldn’t find User with ID=900

ini adalah error ketika active record tidak menemukan kolom data yang id-nya 900, dalam kasus saya, error ini terjadi karena user mengakses url http://localhost:3000/users/blah/900
codenya ada di UsersController.rb sebagai berikut :
def blah
@user=User.find(900)
end
dari sisi coding, tidak ada yang salah dengan kode saya, jadi tidak ada yang perlu diubah , ini terjadi karena users salah mengetik url atau memang sengaja menulis url demikian, http://localhost:3000/users/blah/900 (so blame the users. NOT programmer
), namun problemnya bila hal tersebut terjadi di production server, akan menjadi masalah yang cukup pelik bila users melihat exception berbaris-baris yang tidak dia mengerti, nah ada beberapa solusi untuk menghindari hal ini, salah satunya dengan menggunakan a.k.a meng-override method rescue_action_in_public di application.rb
ini adalah method khusus di controller yang menangkap semua exception yang terjadi pada Rails, defaultnya seperti yang saya jelaskan sebelumnya, itu akan menampilkan pesan exception yang berbelit-belit yang bagi users kebanyakan tidak akan dimengerti, dengan mengoverride method tersebut kita bisa menampilkan exception yang lebih users friendly dan lebih nyaman di mata users, contoh kodenya sebagai berikut
protected
def rescue_action_in_public(exception)
case exception
when ActiveRecord::RecordNotFound
@message = "Mohon maaf, tidak ditemukan data yang relevan"
else
@message = "Mohon maaf, halaman yang anda maksud tidak tersedia di website kami"
end
render :template => "layouts/exception"
end
di dalam kode tersebut, rescue_action_in_public akan me-render template yang berada di app/views/layout/exception.rhtml, maka di file exception.rhtml tsb anda bisa membuat template rhtml sebagai berikut
<h1>Warning : ada kesalahan</h1> <p><%= @message %></p> <p>Klik di <%= link_to "sini",action=>"home" %> untuk kembali ke halaman utama</p>
so dengan begitu tidak ada lagi halaman aneh yang bisa membingungkan users, namun bagi programmer, exception sebenarnya tetap bisa terlihat, karena method tersebut hanya dipanggil jika request datang bukan dari localhost, so ini memudahkan programmer dalam melakukan pengkutuan debugging, akhir kata users senang, programmer pun senang