ぽれいんのブログ

エンジニアになるために覚えたことを日記に付けます。

開発の流れ

はじめに

 

4月からプログラミングを学んでおります。ポレインと申します。
本日は最近学んだruby on rails での開始の大まかな流れについて記入致します。(自分が後から見直したいため)

開発を始めるにあたっての大まかな流れについては
前回の記事にて記入しております。

<前回の記事>

porain.hatenablog.com

<開発環境>

  • データベース:MySQL
  • 開発環境:AWS
  • バージョン管理:Git

を使用しています。

 

 

 

 

開発の流れ

以降は以下の流れに沿って開発を行っていきます。

  1. Model
  2. Router
  3. ルーティングごとに
    (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を編集します。

この工程を繰り返してどんどんアプリケーションを完成させていきます。