Ruby on Rails ではルーティング設定をする場合に resources を使用することが多いと思います。
それに合わせてよく使う書き方で member と collection というものがあり、その2つの違いを分かりやすく解説していきます。
結論として member と collection の違いはルーティングに id がつくかどうかです。
member を使った場合は id が付与されるcollection を使った場合は id が付与されない具体例と合わせて詳しく見ていきましょう。
ここでは例として UsersController があり、それに hoge というメソッドを実行するルーティングを設定するとします。
users#hoge
resources :users do
member do
get 'hoge'
end
end
上記のように member を使用すると以下のようにルーティングが設定されます。
/users/:id/hoge
このように member の場合は :id が付与されます。
この :id は controller 内で params[:id] という形で受け取ることができますね。
resources :users do
collection do
get 'hoge'
end
end
collection を使用すると以下のようなルーティングが設定されます。
/users/hoge
member と違って collection は :id が存在していません。
一見似ている2つには、このような違いがあるわけですね。
resources :users do
get 'hoge', on: :member
end
resources :users do
get 'hoge', on: :collection
end
まとめとして member と collection は以下のようなケースで使い分けることができます。
:id を使用した特定のデータに対するアクションの場合は member を使用する:id の必要ない全体のデータに対するアクションの場合は collection を使用する更に詳しく確認したいかたは Rails ガイドを参考にしてください。