Ruby on Railsでデータベースのテーブルのカラムを削除する方法

よこのじ(@yokonoji_work)です。

Ruby on Railsでデータベースのテーブルのカラムを削除する方法をご紹介します。

カラムの追加については「Ruby on Railsでデータベースのテーブルにカラムを追加する方法」を参考にしてください。

カラム削除のためのマイグレーションファイルを作成する

カラムを削除するという変更を加えるためのマイグレーションファイルを生成します。

$ rails g migration Removeカラム名Fromテーブル名 カラム名:データ型

ここでは、次のような構造のtodosテーブルから「limit_date」というdate型のカラムを削除してみます。

create_table "todos", force: :cascade do |t|
  t.text "state"
  t.text "task"
  t.date "limit_date"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
end

この場合は、次のようなコマンドでマイグレーションファイルを生成します。

$ rails g migration RemoveLimit_dateFromTodos limit_date:date

そうすると、/db/migrate/20190817120505_remove_limit_date_from_todos.rb というマイグレーションファイルが現れます。

class RemoveLimitDateFromTodos < ActiveRecord::Migration[5.2]
  def change
    remove_column :todos, :limit_date, :date
  end
end

この内容を反映させるために rails db:migrate を実行します。

$ rails db:migrate

/db/schema.rb を見てみると、指定したカラムを削除できているのが分かります。

create_table "todos", force: :cascade do |t|
  t.text "state"
  t.text "task"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
end

 

以上、Ruby on Railsでデータベースのテーブルのカラムを削除する方法でした。

カラム追加・削除の方法を知っておけば、テーブルまわりを触るのに抵抗がなくなりますよね。