Rails 一日一つメソッド (Day38) member, collectionメソッド
Rails 一日一つメソッド (Day38) member, collectionメソッド
1. member, collection
- resourcesメソッドで 7つのアクションを自動で定義し、それ以外のアクションを追加する場合ルーティングの中でmemberとcollectionを使用する。
- RailsのRESTful routingを拡張するために使うヘルパメソッドで、特定のリソースたやリソースのコレクションにアクションを定義するときに使う。
2. member
- member ルーティングは、特定のオブジェクト(リソースのメンバー)にアクションを追加するときに使用する。
- memberは idで定義した個々のリソースに対するアクションを定義する。
例)users リソースにUserのprofileが見れる、show_profileアクションを使用する場合。
# URL
/Users/:id/show_profile
resources :users do
member do
get 'show_profile'
end
end
show_profile
- /users/:id/show_profile のURLを持つようになる。
- :id は、特定のUserのIDを表す。
例)ユーザーのreviewが見れる、reviewアクションを追加したい時、reviewは必ず1人のUserがいるものになる。
# URL
/users/Userのid/review
resources :product do
member do
get 'review'
end
emd
3. collection
- collectionはリソース全体に対するアクションを定義する。
- これは、リソースのIDがなくても、全体を対象に定義できる。
例1)usersリソースに対して全てのUser listをダウンロードする downloadアクションを使用する場合。
resources :users do
collection do
get 'download'
end
end
downloadアクションは、/users/download URLを持つようになって、特定のUser IDなしに、User全体を対象にするアクション。
例2
resources :users do
collection do
get 'search'
end
end
memberは、リソースの個々項目に対するラウトを生成する時に使われる。これで、IDを URLに含める。
collectionは、リソースコレクション全体に適用されるラウトを定義する時に使われる。これで、IDがなくてもリソースコレクションのアクションを定義できる。