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

More than 1 year has passed since last update.

[Rails]既存カラムのデフォルト値を変更する方法

Last updated at Posted at 2023-02-06

前提

ユーザー(User)テーブルに管理者フラグ(admin_flag)があるとします。
今回はデフォルトをtrueからfalseに変更してみたいと思います。
*今回はboolean型を操作しますが数値/文字列でも同様に変更可能です。

Table name: users

admin_flag :boolean  default(TRUE)

手順

マイグレーションファイルを作成

デフォルト値変更のためのmigrationファイルを作成します。
今回はデフォルト値を変更するので
Change[カラム名]DefaltTo[テーブル名]
というマイグレーションファイル名にしています。

具体的には
rails g migration ChangeAdminFlagDefaultToUsers
でファイルを作成しました。

マイグレーションファイルの中身を記述

実際に書くのは1行追加だけになります。

def change
  # change_column_default :テーブル名, :カラム名, from: 変更前の値, to: 変更したい値
  change_column_default :users, :admin_flag, from: true, to: false
end

変更自体は

# change_column_default :テーブル名, :カラム名, 変更したい値
change_column_default :users, :admin_flag, false

だけで可能ですが、ロールバック時にdownしなくて良いようにfrom/toを指定しておいた方が楽そうです!

マイグレーションファイル実行

rails db:migrate

以上でデフォルト値が変更出来たかと思います。

余談

デフォルト値の設定をなくしたい場合

# change_column_default :テーブル名, :カラム名, from: 変更前の値, to: nil
  change_column_default :users, :admin_flag, from: true, to: nil

デフォルト値を追加したい場合

# change_column_default :テーブル名, :カラム名, from: nil, to: 変更したい値
  change_column_default :users, :admin_flag, from: nil, to: false
0
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
0
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?