こんにちは!kossyです!
さて、今回はRailsでroutingにconstraintsメソッドで制約を与える方法について、
ブログに残してみたいと思います。
環境
Ruby 2.6.3
Rails 6.0.3
MacOS Cathalina
使い方
例えば、正規表現と組み合わせて、以下のように設定できます。
config/routes.rb get 'articles/:id', to: 'articles#show', constraints: { id: /[A-Z]\d{5}/ }
こうすることにより、/articles/A89318 のようなpath以外にはマッチできないようにすることができます。
/articles/893 のようなpathにはマッチしないということです。
また、以下のように、hostの制限を加えることもできます。
config/routes.rb constraints host: "railsguides.jp" do namespace :admin, path: "" do resource :articles end end
こうすることにより、adminの中に設定されているルーティングにホスト名による制約が付与されます。
つまり、railsguides.jp というホスト名でアクセスされた場合のみ、管理者用ページが表示されるようになります。
勉強になりました。
参考にさせていただいた記事