आप constraints() do ... end
के माध्यम से एक बार में कई रूटों पर रूटिंग बाधा जोड़ सकते हैं ।
मैंने ऐसा करना समाप्त कर दिया और सभी :id
. पर वैश्विक बाधा स्थापित कर दी इसे यूयूआईडी रेगेक्सपी से मिलाने के लिए पैराम्स:
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
इस तरह, /posts/123 या /posts/foobar अब /posts/:id और 404 से मेल नहीं खाते हैं, इससे पहले कभी भी कंट्रोलर एक्शन को इनवाइट नहीं किया जाता है, इस प्रकार PG टाइप एरर से बचा जाता है।
मेरे सभी मॉडल अपनी आईडी के लिए यूयूआईडी का उपयोग करेंगे, इसलिए यह साफ और सूखा है। अगर मेरे पास पूर्णांक आईडी वाले कुछ मॉडल भी होते, तो यह थोड़ा कम साफ होता।