1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Railsマイグレーションの基本:複数カラムの追加と注意点

Last updated at Posted at 2024-10-25

こんにちは!社会人1年目の初心者エンジニアです。
最近、データベースのスキーマを変更するためにマイグレーションを利用することが多くなりました。
この記事では、テーブルに複数のカラムを追加する方法と、マイグレーションを実行する際の注意点について説明します。

1. change_table を使って複数カラムを追加する

新しいカラムを追加する際、change_tableメソッドを使うと、複数のカラムを一度にまとめて追加できます。以下は、employeesテーブルにphone_numberとdepartmentを追加するマイグレーションの例です。

class AddColumnsToEmployees < ActiveRecord::Migration[6.0]
  def change
    change_table :employees do |t|
      t.string :phone_number, comment: '電話番号'
      t.string :department, comment: '部署名'
    end
  end
end

change_tableの利点

  • 上記の例のように、change_tableを使うことで、複数のカラムを一度に追加できる
  • 複数のカラムをまとめて追加することで、マイグレーションファイルがすっきりする

コメントを追加するメリット

  • commentオプションを追加することで、以下のメリットがあります
    • データベーススキーマを視覚的に理解しやすくなる
    • データベースを見直す際に、コメントがあるとカラムの役割が明確になり、修正や新規機能の追加がスムーズに行える

コメント追加した際の例が以下になります。

t.string :phone_number, comment: '電話番号'
t.string :department, comment: '部署名'

2. テーブルのカラムを確認する

テーブルのカラムを確認したい場合、以下のコマンドを使用します。

ActiveRecord::Base.connection.columns(:確認したいテーブル名).map(&:name)

このコマンドを実行することで、テーブルに存在するカラム名のリストを確認できます。

3. マイグレーションの取り消し

もし最後に適用したマイグレーションを取り消したい場合、次のコマンドを使用します。

rails db:rollback

このコマンドを実行することで、最後に適用したマイグレーションが取り消されます。

4. マイグレーションファイルの修正に関する注意

一度マイグレーションを実行した後に、マイグレーションファイルを修正して再度rails db:migrateを実行することはできません。一度実行されると、そのマイグレーションはデータベースに適用済みとして記録されるため、修正したファイルは再実行されません。

修正が必要な場合の対応方法

もしマイグレーションファイルを修正する必要が生じた場合、以下の手順を行なってください

1. 修正したいマイグレーションを適用した後であれば、まずrails db:rollbackコマンドを使用して最後のマイグレーションを取り消します

rails db:rollback

2. マイグレーションファイルを修正
ロールバックした後、必要な変更をマイグレーションファイルに追加した後、再度マイグレーションを実行する。

rails db:migrate

まとめ

Railsのマイグレーションを利用することで、データベースのスキーマを簡単に管理できます。change_tableを使って複数のカラムを一度に追加することができ、効率的に作業を進めることができます。カラムにコメントを追加することで、可読性やメンテナンス性が向上するため、ぜひ活用してみてください。この記事を参考にして、マイグレーションを活用してみてください。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?