【Rails】resourceとresourcesの命名規則

rails エンジニア
記事内に広告が含まれています。

はじめに

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 :photoresources :photosのどちらも、単数形ルーティングと複数形ルーティングを両方作成し、同一のコントローラ(PhotosController)に割り当てられます。

2.5 単数形リソース (Railsガイド)

 

ルーティング一覧 (/rails/info/routes)

単数形resource

rails_route_1

複数形resources

rails_route_2

コメント