はじめに
railsのルーティングを設定するときに、単数形resourceと複数形resourcesの命名規則にハマったのでまとめてみました。
例として下記のようなroutes.rbで紹介します。
# routes.rb Rails.application.routes.draw do resource :post resources :posts end
単数形resourceと複数形resourcesの命名規則
命名規則一覧
それぞれの命名規則を下記の表にまとめました。
太字の部分がresourceとresourcesで異なる部分です。
| resource | resources | |
| routes.rb | resource :post | resources :posts |
| ファイル名 | posts_controller.rb | posts_controller.rb |
| コントローラー名 | PostsController | PostsController |
| エンドポイント(GET index) | /post | /posts |
Railsガイドより
単数形リソースを使用した場合でも、コントローラーは複数形のものに対応付けられるそうです。
これにより、ファイル名やクラス名も複数形になります。
単数形リソースは複数形のコントローラに対応付けられます。これは、同じコントローラで単数形のルーティング(
/account)と複数形のルーティング(/accounts/45)を両方使いたい場合を想定しているためです。従って、resource :photoとresources :photosのどちらも、単数形ルーティングと複数形ルーティングを両方作成し、同一のコントローラ(PhotosController)に割り当てられます。2.5 単数形リソース (Railsガイド)
ルーティング一覧 (/rails/info/routes)
単数形resource

複数形resources
