resources resource 違い

resources resource 違い

何度も検索してしまうので、ここで一度まとめてみようと思います。

railsのルーティング設定でのreseoucesとresourceの違いについてまとめます。

resources

言葉通り、リソースが複数あるよという宣言になります。

resources testsをroutes.rbに記載して、ルーティングを確認してみます。

resourcesで生成されたものは、以下の特徴があります。

  • indexを含む
  • URLにidを含む

一般的に使用される、7つ(8つ)のアクションが生成されます。

tests GET /tests(.:format) tests#index
POST /tests(.:format) tests#create
new_test GET /tests/new(.:format) tests#new
edit_test GET /tests/:id/edit(.:format) tests#edit
test GET /tests/:id(.:format) tests#show
PATCH /tests/:id(.:format) tests#update
PUT /tests/:id(.:format) tests#update
DELETE /tests/:id(.:format) tests#destroy

resource

次は、resource testをroutes.rb記載して、ルーティングを確認してみます。

resourceで生成されたものは、以下の特徴があります。

  • indexが作成されない(単数形の意味通り、複数存在しないものに対して作成するため)
  • URLにidがつかない(単数のため)

こちらは、6つ(7つ)のアクションが生成されます。

new_test GET /test/new(.:format) tests#new
edit_test GET /test/edit(.:format) tests#edit
test GET /test(.:format) tests#show
PATCH /test(.:format) tests#update
PUT /test(.:format) tests#update
DELETE /test(.:format) tests#destroy
POST /test(.:format) tests#create

まとめ

ユーザーのプロフィール用のコントローラなど、単一リソースに対してのルーティングを作成する際に、resourceが使用されます。基本はresourcesで作成することが多くなるかと思いますが、複数のリソースが存在するコントローラになるのか、単一のリソースが存在するコントローラになるのか、見分ける必要があります。