前回に引き続き、今回も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 :name
とt.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(型の指定が必須) | 指定されたカラムをテーブル定義から削除します |
参考