開発の流れ
はじめに
4月からプログラミングを学んでおります。ポレインと申します。
本日は最近学んだruby on rails での開始の大まかな流れについて記入致します。(自分が後から見直したいため)
開発を始めるにあたっての大まかな流れについては
前回の記事にて記入しております。
<前回の記事>
<開発環境>
を使用しています。
開発の流れ
以降は以下の流れに沿って開発を行っていきます。
- Model
- Router
- ルーティングごとに
(1)Controller
(2)View
最初に最も重要であるModelから始めます。Modelは作成するWebアプリケーションの扱うデータを決めます。次にRouterです。RouterによってModelを置くURLを決定します。Routerが決まるとControllerが決まり、Controllerが決まるとViewが決まります。
Model
Modelはデータベースとの接続を行います。Modelはリソースであり、操作対象です。(データベースのレコード1つがModelのインスタンス1つに対応します。
Modelを作成する
下記コマンドを実行します。
$ rails g model モデル名 content:string
上記のコマンドにて、
- マイグレーションファイル
- モデルファイル
が作成されます。
マイグレーションファイル
Railsではマイグレーションファイルというテーブル管理ファイルによって管理・実行されます。マイグレーションファイル内にはテーブルを作成・削除したり、カラムを追加・削除したりすることが記述されています。
マイグレーションファイルの実行
マイグレーションを実行して、データベースにテーブルを作成します。
$ rails db:migrate
*マイグレーションファイルの実行後はこのファイルを修正してもテーブルの変更はできません。実行済みのものはそのまま削除しないように注意してください。一度実行したマイグレーションファイルを削除編集する場合は下記コマンドを実行
$ rails db:rollback
このコマンドで最後のマイグレーションファイルの適用を戻せます。これの後に、編集・削除をしましょう。
$ rails db:migrate:reset
また、マイグレーションファイルが既にテーブルに反映されているかどうかは下記コマンドで確認できます。
$ rails db:migrate:status
モデルファイル
モデルはデータベースやテーブル設計を前提とするため、マイグレーションが完了していないと使用することができません。
モデルファイルは基本的に app/models/直下に生成、配置されます。
またモデルファイルはApplicationRecordクラスを継承しています。
app/models/クラス名.rb
class クラス名 < ApplicationRecord end
Modelで使用するCRUD用メソッド一覧
メソッド名 | 用途 |
---|---|
all | 全てのレコードを取得 |
new | 新規レコードのためのモデルインスタンスを作成 |
find | idを指定して検索 |
find_by | id以外でも指定して検索 |
where | 検索条件を文字列、配列、ハッシュのいずれかの方法で与える |
first | 最初のレコードを1件だけ取得 |
save | レコードの作成 |
update, save | データの更新 |
destroy | データの削除 |
モデルのCRUD操作
モデルはデータベースを参照するため、MySQLサーバの起動を確認して起動します。
$ rails c
変更をコミット
$ git status
$ git diff
$ git add .
$ git commit -m "model"
Router
config/routes.rb
Rails.application.routes.draw do resources :モデル名(複数形) end
上記は7つの基本ルーティングの省略形です。
基本ルーティング
- CRUD
- 一覧ページへのアクセス
- 新規作成用のフォームページ
- 更新用のフォームページ
また、上記の resources の行において、
resources :モデル名(複数形), except: [:index]
とすることで、resources による7つのルーティングの自動生成から、特定のアクション(上記の場合は index )をルーディングから除外できます。
Router完成
config/routes.rb
Rails.application.routes.draw do root to: 'モデル名(複数形)#index' resources :モデル名(複数形) end
上記の追加された行はトップページにアクセスされたときのルーティングの設定です。
今回は index アクションに設定しています。
Routerの確認
$ rails routes
resources :モデル名(複数形)
で生成される7つのルーティングのことをRESTfulなルーディングと呼びます。
* また、 rails/info/routes をURLに追加することでパスを調べることができます。
Controller
Cotrollerとはユーザから送信されてきたHTTPリクエストの処理を担当するものです。 HTTP リクエストは Router から Controller の1つのメソッドに割り当てられます。Router と対応している Controller のメソッドのことをアクションと呼びます。 Controller は HTTP リクエストに対応した Model の取得や作成、保存などを行います。
Controllerの生成
下記コマンドを実行します。
$ rails g controller コントローラー名
コントローラー名はモデルの複数形を使います。
生成されたコントローラーファイルはモデルファイル同様、ApplicationRecordクラスを継承しています。
コントローラーファイル内でルーティングと同じ名前のメソッド名として定義すれば、対応させることができます。
resources :モデル名(複数形)で指定した RESTful なルーティングに対応するように モデル名(複数形)_controller.rb に追記していきます。
6.View
View とは、 Controller が HTTP リクエストを処理し終えて、最終的に HTTP レスポンスとして返す Web ページです。全ては Web 上でのアプリケーションなので、最後には、Web ページの表示という形でユーザに見えないとどうなったのか結果がわかりません。
View はユーザに向けて結果をお知らせするためのものです。 View には Controller によって選択された適切な Model が埋め込まれます。
先ほどの
$ rails g controller コントローラ名
によって、 app/views/コントローラー名/ フォルダが作成されているので、フォルダ内に、Controllerに対応するファイルを .html.erb の表示形式にて作成します。
この後は、viewを編集します。
この工程を繰り返してどんどんアプリケーションを完成させていきます。