Implicit Collection パターン

/{id}

どのようなパターン?

Collection & Member Resource パターンから、コレクションリソースの部分を取り去ってパス階層を縮めた形。

例えばこのようにする。

/users/1/articles   → なし
/users/1/articles/2 → /users/1/2

コレクションリソースを省略する理由としては、

  • コレクションリソースが不要
  • コレクションが何であるかは自明
  • パスを短くしたい

などが考えられる。

コレクションリソースが不要

「コレクション全体」へのアクセスが必要ない場合。 TwitterやGitHubは、ユーザー数が膨大で「ユーザー全体」というリソースを提供する意味がなく、個別のユーザーリソースだけがあればよい。

/users/tkawa → /tkawa

別のリソースを作る場合、ユーザーリソースの名前と衝突しないように注意。

また、Factoryの役目を担うリソースがなくなるため、リソース作成の手段を考慮する必要がある。

コレクションが何であるかは自明

年月日の例。

/years/2012/months/12 → /2012/12

ルートリソースを代用

/users/tkawa → /tkawaのように最初のパス階層を省略するときは、ルートリソース/をコレクションリソースとして使うことも可能。

Rails routes.rb の書き方

resources :users, path: ''