ルーティング、コントローラー、モデル、マイグレーション、ビューの擬人化
| 思考整理 |
新しいアプリケーションの構造を考える際、どことどこにコントローラーが必要なんだ?
必要なモデルは?と混乱したため、擬人化してみた。
| 場面設定 | 市役所(アプリケーション)
ルーティング:総合受付
役割:リクエストに対応する最適な窓口を案内する
説明:ルーティングは、今日はいかがなさいましたか?とそれぞれのリクエストに対応する最適なコントローラーの窓口(アクション)を案内します。総合受付のような役割を果たしています。
総合受付なので、市役所(アプリケーション)には1つだけで十分です。
コントローラー:窓口受付
役割:リクエストに対応する最適な処理を案内する
説明:コントローラーは、受け取ったリクエストに基づいて適切な処理を行います。今日はいかがなさいましたか?とリクエストに応じた書類(ビュー)を渡します。
new/create:住民登録届 edit/update:住所変更届 destroy:転居届 show:住民票の写し発行 など
内容ごとにやることがことなるので、取り扱う内容ごとに複数必要です。
※同じnew/createでも住民登録と保育所利用者登録は違う窓口(コントローラー)
ビュー:申込用紙、案内チラシ
説明:ビューは、市民が見る情報そのものです。申込用紙(form)に記入したり、情報を閲覧できるようにします。
モデル:窓口の人
役割:記入内容のチェックを行う
説明:モデルは申込用紙の記入内容のチェック(バリデーション)を行います。
扱うデータベースごとに必要なので、市役所(アプリケーション)内の各窓口に専属の人がいます。
マイグレーション:書類やデータ管理の人
説明:マイグレーションは窓口の先輩(モデル)に言われたとおりに適切な場所にデータをファイリングしたり、データベースにデータを入れたりします。
データベースごとに専属の係が必要です。住民登録(user)の係が投書(comment)の管理はしません。縦割りです。
読んでいただいてありがとうございました。