2019-04-03

routingのconstraintsを一気に適用する

Rails Routing from the Outside In — Ruby on Rails Guides

こういうこと。

You can also specify constraints in a block form:

namespace :admin do
  constraints subdomain: 'admin' do
    resources :photos
  end
end

これを使えば先日の

Rails 4.2.11.1, 5.0.7.2, 5.1.6.2, 5.2.2.1, and 6.0.0.beta3 have been released! | Riding Rails

であった問題は以下のように一網打尽に解決できる。

constrains lambda {|req| req.format == 'html'} do
  ..
end

Accept ヘッダ経由で format に不適切な文字列が入っていたら routing にマッチしないので 404 が返って終了となる。lambda で書く場合の req.format は Symbol ではなく String であることに注意。(Symbol は Symbol で別に取得方法があるはず。)

何かの事情で Rails のアップグレードがすぐにはできない場合には上の対処方法でもなんとかなる。

About

例によって個人のなんちゃらです