はじめに
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ガイド)
コメント