Rails のルーティングに使用する id を別の内容に変更する方法
通常、edit 等に使用する URI に設定される id を、別のキー等で置き換えたい場合があります。
$ be rake routes Prefix Verb URI Pattern password_resets POST /password_resets(.:format) password_resets#create new_password_reset GET /password_resets/new(.:format) password_resets#new edit_password_reset GET /password_resets/:id/edit(.:format) password_resets#edit password_reset PATCH /password_resets/:id(.:format) password_resets#update PUT /password_resets/:id(.:format) password_resets#update
この id を code に置き換えたい場合、.\config\routes.rb
に以下のようにparam: code
を設定することで、置き換えることができます。
resources :password_resets, param: :employee_code, only: [:new, :create, :edit, :update]
上記のようにすることで、ルーティング情報は以下のようになります。
$ be rake routes Prefix Verb URI Pattern Controller#Action password_resets POST /password_resets(.:format) password_resets#create new_password_reset GET /password_resets/new(.:format) password_resets#new edit_password_reset GET /password_resets/:code/edit(.:format) password_resets#edit password_reset PATCH /password_resets/:code(.:format) password_resets#update PUT /password_resets/:code(.:format) password_resets#update
id とは別のキーを主キーのような形で使う際に重宝します。