Anda dapat menambahkan batasan perutean ke beberapa rute sekaligus melalui constraints() do ... end
.
Saya akhirnya melakukan ini dan menetapkan batasan global pada semua :id
params untuk mencocokkannya dengan regexp UUID:
MyApp::Application.routes.draw do
constraints(id: /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i) do
# my routes here
end
end
Dengan cara ini, /posts/123 atau /posts/foobar tidak lagi cocok dengan /posts/:id dan 404 sebelum menjalankan tindakan pengontrol, sehingga menghindari kesalahan jenis PG.
Semua model saya akan menggunakan UUID untuk ID mereka jadi ini bersih dan KERING. Jika saya memiliki beberapa model dengan ID bilangan bulat juga, itu akan menjadi sedikit kurang bersih.