nologyance.net

日々のアウトプット

Java初級者からみたRailsのココがすごい

背景

現在Railsチュートリアル第7章を学習しています。 その中で私の中では結構衝撃的な機能に触れる機会があったので備忘録として。

Railsではconfig/routes.rbにルーティングを記載して制御します。 Progateの講座だと必要なview,controller,actionの組み合わせは逐一記載していました。

Userリソースだとこんな感じ

get 'users/index' => "users#index"
get "users/:id/show" => "users#show"
get "signup" => "users#new"
post "users/create" => "users#create"
get "users/:id/edit" => "users#edit"
post "users/:id/update" => "users#update"
post "users/:id/destroy" => "users#destroy"

それがなんとこんなふうに書けるらしい

resources :users

resources :usersという行は、ユーザー情報を表示するURL (/users/1) を追加するためだけのものではありません。サンプルアプリケーションにこの1行を追加すると、ユーザーのURLを生成するための多数の名前付きルート (5.3.3) と共に、RESTfulなUsersリソースで必要となるすべてのアクションが利用できるようになるのです。 ※Railsチュートリアルより引用させていただきました。

細かいURLの違いはありますが、たった一行でこれだけのルーティングが設定できるのは結構衝撃でした。

しかもアクションまで勝手に作ってくれているらしい。 直後でUsersControllerにshowアクションを定義しているところをみると、「resources :users」で暗黙的に定義してオーバーライドしているイメージなのかな?

JavaだとSpringMVCが似たようなことをやってくれますが、個人的にはRailsのほうが理解しやすいですね。