LoginSignup
2
0

More than 5 years have passed since last update.

Rails: 既にレコードが存在しているテーブルに新たにnull falseなカラムを追加する時の挙動について

Posted at

概要

Railsの既にレコードが存在しているテーブルにnull falseを指定したカラムを追加したいと思った時の挙動について。

結論

null: false に加えて default
を指定してあれば、既に存在しているレコードにはdefault値がセットされるため、マイグレーションでカラムを追加してもエラーになりません。

実行内容

マイグレーションファイル内容

class AddColumnToUser < ActiveRecord::Migration[5.1]
  def change
    add_column :users, :send_status, :integer, limit: 2, default: 0, null: false, comment: '送信ステータス 0:送信前, 1:送信済, 2:送信失敗'
  end
end

実行結果

miagration実行前のテーブルのレコード

+----+------------+-----------------+---------------------+--------+------------+------------+--------------+---------------------+---------------------+-------------+
| id | account_id | lock_version | created_at | updated_at 
+----+------------+-----------------+---------------------+--------+------------+------------+--------------+---------------------+---------------------+-------------+
|  1 |  722672863 |  1 | 2018-08-21 10:22:24 | 2018-08-21 10:48:57 
|  2 |  722672863 |  0 | 2018-08-21 11:00:23 | 2018-08-21 11:00:23  
+----+------------+-----------------+---------------------+--------+------------+------------+--------------+---------------------+---------------------+-------------+

migration実行後のテーブルのレコードの状態

+----+------------+-----------------+---------------------+--------+------------+------------+--------------+---------------------+---------------------+-------------+
| id | account_id | lock_version | created_at | updated_at |send_status |
+----+------------+-----------------+---------------------+--------+------------+------------+--------------+---------------------+---------------------+-------------+
|  1 |  722672863 |  1 | 2018-08-21 10:22:24 | 2018-08-21 10:48:57 | 0 |
|  2 |  722672863 |  0 | 2018-08-21 11:00:23 | 2018-08-21 11:00:23 | 0 |
+----+------------+-----------------+---------------------+--------+------------+------------+--------------+---------------------+---------------------+-------------+

環境情報

CentOS Linux release 7.4.1708 (Core) (さくらvps)
ruby: 2.4.3(rbenv)
rbenv 1.1.1-28-gb943955
rails 5.0.6
Phusion Passenger 5.2.3
Apache/2.4.6 (CentOS)
Capistrano 3.3.5
2
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
2
0