Ruby on Railsでアプリを作ってみよう⑤


モデルとデータベースの役割

入力した情報などを保存しておくことができなければ
アプリケーションとして成り立ちません。

今回は情報を保存するためのデータベースとモデルについて学習していきましょう。

テーブル

データベース内に作成される表形式でデータを収納する仕組みです。
全ての情報がごちゃ混ぜに保存されていると管理ができませんので
情報の種類ごとにテーブルを作成し管理します。

図1

レコードとカラム

表形式のテーブルに置いて行はレコード列はカラムといいます。

図2

モデル

MVCの役割の一つで
データベースにどんな情報を保存するか、またどんな情報を取得してくるかを管理する役割を
持つのがモデルです。テーブルごと対応するモデルで管理されています。
図3

図4

それではモデルを作成していきましょう

rails g model コマンド

rails g model モデル名(単数形)

コントローラーは複数形で名前を付けましたがモデルは単数形で名前をつけましょう。命名規則です。

postモデルを作ってみましょう。

rails g model post

それではテーブルにどんなカラムを設定するかなど仕様を決めていきましょう。

マイグレーション

テーブルの仕様書です。このファイルの中にどのようなテーブルにするか書き込み反映します。
マイグレーションファイルはモデル作成と同時に自動で作られます。開いてみましょう。

class CreatePosts < ActiveRecord::Migration[6.0]
  def change
    create_table :posts do |t|
    #ここに設定したいカラム名や種類などをかく
      t.timestamps
    end
  end
end

マイグレーションファイルにはカラム名とカラムの型という物を記述します。
カラムの型は書き方が決まっていて複数の種類があります。用途によって使い分けます。

カラムの型 説明 用途
integer 数値 金額、回数など
string 文字(短文) ユーザー名、メールアドレスなど
text 文字(長文) 投稿文、説明文など
boolean 真か偽か はい・いいえの選択、成功・失敗のフラグなど
datetime 日付と時刻 作成日時、更新日時など

テキスト型のcommentカラムを作ってみましょう

class CreatePosts < ActiveRecord::Migration[6.0]
  def change
    create_table :posts do |t|
      t.text :comment
      t.timestamps
    end
  end
end

t.の後ろに記述されているのがカラムの型、その右側にシンボルで記述されているのがカラム名になります。
ここで作成したのはtext型のcommentカラムになります。

マイグレーションファイルに記述しただけだとまだデータベースに反映されないので
マイグレーションを下記のコマンドで実行することが必要です。

rails db:migrate

これでpostsテーブルに反映されました。

マイグレーションを変更したい時

一度マイグレーションを実行するとマイグレーションファイルの中身を書き換えただけでは
変更が反映されませんロールバックしてから記述を修正し再度マイグレーションを実行しましょう。

rails db:rollback

rails db:migrate:statusコマンド

マイグレーションが実行済みであるかを確認するコマンド
Statusの部分にはマイグレーションが実行されているかいないかが示されています。
upなら実行中、downなら実行されていませんロールバックがうまく実行されていればdownになっています。

Sequel Pro

データベースを可視化できるツールです。
テーブル情報やカラム名などの情報を確認することができます。

写真2

以上です。