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]

Kirim email ke