Rails テーブル(モデル)を新規作成する

概要

Railsでテーブルを作るにはモデルを作成します。テーブルへのカラムの追加はマイグレーションで行います。フローは次のようになります。

  1. Railsでモデルを生成する。
  2. マイグレーションスクリプトができるので、そこにカラムを定義する。
  3. マイグレーションを実行する。
  4. カラムを変更する場合は、新しいマイグレーションファイルを作り、2~3を繰り返す。同じバージョンのマイグレーションファイルを修正しても、変更されない。

Railsでモデルを作成する

次の書式で、

$ rails generate model モデル名

モデルを生成します。モデル名は単数形です。generate は g と省略できます。

rails g model tree

次のマイグレーションスクリプトが生成されます。

db/migrate/20160619084152_create_trees.rb

この時点ではデータベースにテーブルは作成されていません。


マイグレーションスクリプトにテーブルのカラムを定義する

マイグレーションスクリプトにはテーブルの定義を記述します。

マイグレーションスクリプトを開きdoブロックにカラムを記述します。

class CreateTrees < ActiveRecord::Migration
  def change
    create_table テーブル名 [, テーブルオプション] do |t|
      # ここにカラムを定義する
      # t.カラムの型 :カラム名 [,カラムオプション]
      t.string :name
      t.timestamps null: false
    end
  end
end

テーブルオプションの種類は次の通り

:id # 主キーを自動生成するか。true = yes
:primary_key # 主キーのカラムの名前。デフォルト = id
:options # テーブルオプション
:temporary # 一時テーブルとして作成

カラム型の種類は次の通り

binary # バイナリ
boolean # ブーリアン
date # 日付
datetime # 日時
decimal # 精度の高い小数
float # 浮動小数
integer # 整数
string # 文字列 255文字以内。文字数が決まっている場合はこっち。
text # 長い文字列。文字数が不定の場合は基本こっち。
time # 時間
timestamp # より細かい日時

カラムオプションの種類は次の通り

:limit # カラムの桁数
:default # デフォルトの値
:null # nullを許可するか。true = 許可
:precision # 数値の桁数
:scale # 小数点以下の桁数

マイグレーションし、マイグレーションスクリプトの定義に従ってデータベースにテーブルを作成します。

rake db:migrate

これでデータベースにテーブルが作成できました。


テーブルの構造を確認する

Railsからは db/schema.rb を開くと内容を確認できます。

データベースを直接確認するには、MySQL Serverで確認します。

MySQLにログイン後、データベースを選択し、

> use sample_db;

テーブルを指定してカラム一覧を表示します。

desc trees;

もしくは

> show columns from trees;

 とします。