resourceとresources

2024/05/01に公開

ルート設定で違いがはっきりします。

  • resources:
    複数形であり、一般的には複数のリソースを扱います。
    これにより、標準的なアクション(index, show, new, create, edit, update, destroy)
    のルーティングが自動的に生成されます。

例えば、resources :usersは、
ユーザーの一覧表示、個別ユーザーの詳細表示、ユーザーの新規作成フォーム、ユーザーの更新フォームなど、複数のユーザーに関連するアクションへのルーティングを提供します

  • resource:
    単数形であり、主に単一のリソースに対する操作を扱います。
    これは、特定のIDを必要としない場合
    (例えば、現在ログインしているユーザーのプロファイルページ)に使用されます。
    indexアクションは含まれません

なぜindexもIDも必要ないか?
上述したように、resourceを使用する場合、単一リソースが使用対象をなることを説明しました。
しかし、indexアクションはモデルのリソース全てを表示することを意図しています。
結果、単一リソースであるプロフィール画面を扱う際に複数を表示するindexアクションは不要です。

idも同様に
プロフィール設定画面はどうでしょうか。
単一リソースであるプロフィールは、指定せずとも一つしかない。
そのため、、idを指定する必要がそもそもないという理由で:idが消えています。

どっちを使用するか?と場面に遭遇したら、IDを付与する理由は?というところで考えてみてください。

例えば、
1人が、何投稿もする場合、IDは必要。(なぜなら、どこの投稿と繋げているかで、他が決まるため)

ですが、
マイページは? 1人に対して何投稿もないです。(1人1ページのサイトしか見たことありません。)

という形で、つなげるidは必要なのか?という目線で判断しましょう。

Discussion