3
1

More than 1 year has passed since last update.

【Rails】マイグレーション入門~テーブルの作成とデータ型設定~

Last updated at Posted at 2023-08-21

前回に引き続き、今回もRailsのマイグレーションについて紹介したいと思います。

前回の記事

この記事ではマイグレーション内でどのようにテーブルやカラムを作成、修正するかについて解説していきます。

目次

テーブルの作成とカラムの追加
カラムのデータ型と制約
マイグレーションの変更を追加する

テーブルの作成とカラムの追加

マイグレーションファイル内では、create_tableメソッドを使用してテーブルを作成し、そのテーブルにカラムを追加することができます。
以下は例えば"user"というテーブルを作成し、その中に"name"と"email"というカラムを追加することができます。

class CreateUsers < ActiveRecord::Migration[7.0]
    def change
        create_table :users do |t|
            t.string :name
            t.string :email

            t.timestamps
        end
    end
end

上記のコードではcreate_tableメソッドのブロック内にt.string :namet.string :emailと記述されています。
これによって"user"テーブルに"name"と"email"というカラムが追加されます。

カラムのデータ型と制約

カラムのデータ型や制約は、マイグレーションファイル内で設定することができます。
以下は、"posts"テーブルを作成し、その中に"title"カラムを追加する際に、データ型や制約を指定する例です。

class CreatePosts < ActiveRecord::Migration[7.0]
    def change
        create_ table :posts do |t|
            t.string :title, null: false
            t.text :content

            t.timestamps
        end
    end
end

上記の例では、t.string :title, null: falseという記述により、"title"カラムのデータ型は文字列で"null"制約が"false"に設定されていることを示しています。
また、t.text :contentという記述により、"content"カラムのデータ型はテキストとなります。

以下はよく使われるデータ型です。

型名 定義
string 文字列を表すデータ型。通常、短いテキストや名前などに使用されます。
text 長いテキストを表すデータ型。記事の本文やコメントなどに使用されます。
integer 整数を表すデータ型。IDやカウントなど整数値を保存するために使用されます。
float 浮動小数点数を表すデータ型。小数点以下の数値を格納する際に使用されます。
decimal 固定小数点数を表すデータ型。通常、通貨や数値計算などに使用されます。
boolean 真偽値を表すデータ型。trueまたはfalseの値を格納するために使用されます。
binary バイナリーデータを表すデータ型。画像やファイルなどのバイナリーデータを格納する際に使用されます。

マイグレーションの変更を追加する

すでに適用されたマイグレーションに後から変更を追加する際には、changeメソッドの中に修正内容を記述します。以下は"user"テーブルにデータ型が"integer"の"age"カラムを追加する例です。

class AddAgeToUsers < ActiveRecord::Migration[7.0]
    def change
        add_column :users, :age, :integer
    end
end

上記のコードではadd_columnメソッドを使用して、既存のテーブルに新しいカラムを追加しています。
以下に示すのはchengeメソッドでサポートされているマイグレーション定義の一部です。

定義 内容
add_check_constraint 新しいチェック制約をテーブルに追加します
add_column 新しいカラムをテーブルに追加します
add_foreign_key 新しい外部キーをテーブルに追加します
add_index 新しいインデックスをテーブルに追加します
add_reference 新しい参照をテーブルに追加します
add_timestamps タイムスタンプを追加します
change_column_default(:fromと:toの指定は省略不可) カラムのデフォルト値を変更します
create_join_table joinテーブルを作成します
create_table テーブルを作成します
drop_join_table joinテーブルを削除します
remove_column(型の指定が必須) 指定されたカラムをテーブル定義から削除します

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1