概要
Railsでテーブルを作るにはモデルを作成します。テーブルへのカラムの追加はマイグレーションで行います。フローは次のようになります。
- Railsでモデルを生成する。
- マイグレーションスクリプトができるので、そこにカラムを定義する。
- マイグレーションを実行する。
- カラムを変更する場合は、新しいマイグレーションファイルを作り、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;
とします。