後へ      Topへ      次へ

マイグレーションファイルの生成

カラムのデフォルト値設定

Scaffold の生成では、
データベースの各カラムの名前と型のみを指定します。

デフォルト値が設定されていると便利なことも多いので、
ここで纏めて設定しておきます。

  1. ruby bin/rails generate migration ChangeDefaultValues
    を実行。
  2. \db\migrate フォルダに、
    (生成日時)_change_default_values.rb が生成されます。
    サンプルプログラムでは、20260112064148_change_default_values.rb です。
  3. change_default_values.rb で、
    各デフォルト値を記載します。
    書式は、
    change_column_default (テーブル名) (カラム名) (デフォルト値)
    例えば、
    change_column_default :users, :enabled, true
  4. ruby bin/rails db:migrate
    データベースに各デフォルト値が設定されます。

参考リポジトリ: https://github.com/Bonv-dev/book_mgmt/commit/ad035f7

migration コマンドは Upper Camel Case (Pascal Case) で書きます。  
実際に生成されるファイル名は Snake Case になります。

 

カラム修飾子 (default, null)

マイグレージョンファイルのオプションについて説明します。

サンプルプログラムでは、
Scaffold でテーブルを作った後に、
上記の方法でデフォルト値を追加設定しましたが、
2つを同時に行うことも可能です。

ruby bin/rails generate migration CreateNewTables name:string
で作成したマイグレーションファイルを作り、

class CreateNewTables < ActiveRecord::Migration[8.1]
  def change
    create_table :new_tables do |t|
      t.string :name

      t.timestamps
    end
  end
end

となったとします。
name カラムの設定を追加するには、

2つを列挙してもいいです。
他にもあるので、詳細は Rails ガイド を参照してください。

generate migration 色々

マイグレーションファイルは、一般に

class ChangeDefaultValues < ActiveRecord::Migration[8.1]
  def change
  end
end

のように、メソッドの中は空です。

migration のパラメータを決まった形式で書くと、
詳細なマイグレーションファイルが作成できます。

Create(Camelテーブル名) Snakeカラム名:型 ・・・

ruby bin/rails generate migration CreateNewTables name:string serial:integer
とすると、

class CreateNewTables < ActiveRecord::Migration[8.1]
  def change
    create_table :new_tables do |t|
      t.string :name
      t.integer :serial

      t.timestamps
    end
  end
end

のように、新しいテーブルを作成できます。

Add(Camelカラム名)To(Camelテーブル名) Snakeカラム名:型

ruby bin/rails generate migration AddHeightToUsers height:integer
とすると、

class AddHeightToUsers < ActiveRecord::Migration[8.1]
  def change
    add_column :users, :height, :integer
  end
end

のように、既存のテーブルにカラムを追加できます。

Remove(Camelカラム名)To(Camelテーブル名) Snakeカラム名:型

Remove を使えば、
Add と同じ形式で、既存テーブルのカラムを削除できます。

詳細が必要な方は、Rails ガイド を参照してください。


後へ      Topへ      次へ