Hi all,
Merupakan cara yang biasa untuk mencegah error record not found dengan
rescue. Namun untuk kasus yang sederhana berikut ini, rails (1.2.3-20) tidak
bisa. Ini method di kontroller saya:
def show_page
begin
load_data
@page = Page.find_by_name(params[:name])
rescue ActiveRecord::RecordNotFound
logger.error("Attempt to access invalid page #{params[:name]}")
redirect_to_index("Halaman tidak ditemukan")
end
end
namun untuk method yang lain, dengan kode serupa, yang membedakan hanya
params[:id], tidak muncul error. Btw, error-nya bukan no record found, tapi
NoMethodError karena atribut dari @page yang ada di viewer nggak ada.
Saya lihat di log, yang membedakan cuman 'LIMIT 1'.
log saat menjalankan method dengan params[:id]
Product Load (0.065676) SELECT * FROM products WHERE (products.`id` = 732)
Attempt to access invalid product 732
Redirected to http://localhost:3000/
>>> Perhatikan, di sini rescue berhasil, sedangkan menjalankan method dengan
params[:name] langsung di by-pass ke "rendering within layouts/store ..."
dan seterusnya
Page Columns (0.023000) SHOW FIELDS FROM pages
Page Load (0.000610) SELECT * FROM pages WHERE (pages.`name` = 'store')
LIMIT 1
Rendering within layouts/store
Rendering store/show_page
Ada yang bisa kasih penjelasan mengapa bisa demikian? Dan gimana cara
menangkap error ini lalu mengarahkannya ke controller lain?
Thanks,
Dida
[Non-text portions of this message have been removed]