##はじめに
Railsでroutes.rbを設定するとき、memberやcollectionを記述することがあります。
routes.rb
resources :users do
member do
get :logout
end
end
resource :user_sign_ups do
collection do
get :tell
end
end
このmemberやcollectionはどんな役割をしているのでしょうか?
##memberとcollectionの違いは?
簡単に言うと、routingにidが付くか付かないかの違い
です。
もう少しわかりやすく説明するために例をだして解説します。
resources :users do
member do
get :logout
end
end
users#logout
をmemberでルーティングを設定すると、URLは以下のようになります。
/users/:id/logout
このようにuserを識別するための:idが追加されます。
では、collectionでルーティングを設定した場合はどうなるでしょう?
resource :user_sign_ups do
collection do
get :tell
end
end
user_sign_ups#tell
をcollectionでルーティングを設定しました。
すると
/user_sign_ups/tell
urlに:idが追加されていません。
:idでurlを識別する必要がない場合はcollectionで設定します。
##おわりに
まとめると
・memberは特定のデータにアクションを利用する
・collectionは全体のデータにアクションを利用する
ときに設定します・