4
3

More than 1 year has passed since last update.

Railsのルーティング: resources と resource の違いとメリット

Posted at

はじめに

Ruby on Railsのルーティングには、resourcesresourceの二つの非常に便利なメソッドがあります。これらはRESTfulなルーティングを自動的に生成し、それぞれのコントローラアクションへのパスを簡単に作成することができます。

resources

resourcesメソッドは、指定したリソースに対する標準的なRESTfulルーティングを自動的に生成します。

例えば、config/routes.rbに以下のように記述すると、

ruby routes.rb
resources :users

UsersControllerのアクションに対応した7つのルーティング(index, show, new, edit, create, update, destroy)が自動的に生成されます。また、これらのルーティングに対応したパスヘルパーメソッドも自動的に提供されます。

resource

resourceメソッドは、resourcesと同様にルーティングを自動生成しますが、こちらは単数形リソースを表現します。そのため、indexとshowアクションのルーティングが生成されません。つまり、そのリソースは一つしか存在しないという前提でルーティングが生成されます。

例えば、ユーザープロフィールページが一つしかない場合、config/routes.rbに以下のように記述します。

ruby routes.rb
resource :profile

すると、ProfilesControllerのnew, create, edit, update, destroyの5つのアクションに対応したルーティングが自動的に生成されます。

resourcesとresourceの違い

主な違いは二つあります。

URL: resourcesは複数形のリソース名をURLに使用しますが、resourceは単数形のリソース名をURLに使用します。
ID: resourcesは各リソースのIDをURLに含めますが、resourceはそれを含めません。なぜなら、resourceは1つしか存在しないリソースを前提としているからです。

メリット

resourcesresourceの使い分けにより、アプリケーションのルーティングを柔軟に設計することができます。また、これらのメソッドを使用することで、繰り返しのないDRYなコードを書くことができ、また生成されるURLもRESTfulな設計に基づいているため、他の開発者にとって理解しやすいコードになります。

4
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3