概要
Rails には index, show, new, edit, create, update, destroy の 7 つのデフォルトアクションが用意されています。
もし、これ以外のアクションを新しく追加したい場合、ルーティングに設定を追記する必要があります。
この場合、routes.rb をどう書くのか調べたところルーティングのメソッドに、member と collection と言うものがありました。
この 2 つの使い方を簡単にまとめました。
member の使い方
member は特定のデータに対するアクションに利用します。
例えば、ユーザーのフォローを行う follow アクションを新しく追加したいとします。
この場合、フォローを行うのは、特定のユーザーです。
『 A さんが B さんをフォローする』の様な処理になると思います。
なので、URL を作成するとしたら、下記の様になります。
特定のユーザーを示す id が含まれていることに注目してください。
http://$(DNS)/users/1/follow
member を使った routes.rb の記載方法は下記の様になります。
$ cat config/routes.rb
Rails.application.routes.draw do
resources :users do
post :follow, on: :member
end
end
collection の使い方
collection は全部のデータに対するアクションに利用します。
例えば、ユーザーの検索を行う search アクションを新しく追加したいとします。
この場合、検索対象は全部のユーザーです。
A さんが検索しても、B さんが検索しても同じ結果になるはずです。
なので、URL を作成するとしたら、下記の様になります。
http://$(DNS)/users/search
collection を使った routes.rb の記載方法は下記の様になります。
$ cat config/routes.rb
Rails.application.routes.draw do
resources :users do
get :search, on: :collection
end
end
まとめ
member と collection の使い方をまとめました。
member は特定のデータに対するアクションに利用します。
collection は全部のデータに対するアクションに利用します。
和訳すると collection は集団、member は (集団の) 一員 みたいな意味なので、そう覚えておけば分かりやすいですね。