結論
memberを用いることでidを用いて特定のリソースに対してアクションを実行することができ、collectionを用いることで全てのリソースに対してアクションを実行することができる。
公式API
member
https://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Resources.html#method-i-member
collection
https://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Resources.html#method-i-collection
member
resources :users do
member do
get :hoge
end
end
idを指定することができるので特定のUserに対してhogeアクションを行いたい場合に用いることができます。
collection
resources :users do
collection do
get :piyo
end
end
collectionを用いるとルーティングは以下のようになります。
memberを用いた場合とは異なり、idを指定しないので全てのUserに対してpiyoアクションを行いたい場合に用いることができます。
おわりに
特定のリソースに対してアクションを実行するか、全てのリソースに対してアクションを実行するかによってmemberとcollectionを使い分けることが必要です。