LoginSignup
8
6

More than 3 years have passed since last update.

Rails 後からNot null 制約を付与する

Posted at

DBのカラムにて、Not null制約をつけるのを忘れていたことに気がついた
もとのマイグレーションファイルを修正するのは、よくないとのことなので
また新たにNot null制約を付与するマイグレーションファイルを作成する

rails g migration ChangeCloumnsNotnullAddUsers

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

方法は2種類あるらしい!

change_columnメソッド

db/migrate/***_change_columns_add_notnull_on_users.rb
class ChangeColumnsAddNotnullOnUsers < ActiveRecord::Migration[5.2]
  def change
    change_column :users, :name, :string, null: false
    change_column :users, :email, :string, null: false
    change_column :users, :password, :string, null: false
  end
end

false → NotNull制約を付与する
true → NotNull制約を付与しない

change_column :テーブル名, :カラム名, :データ型, null: false or true

change_columnメソッドを使うのが一般的だったりするのかな…!

change_column_null

db/migrate/***_change_columns_add_notnull_on_users.rb
class ChangeColumnsAddNotnullOnUsers < ActiveRecord::Migration[5.2]
  def change
    change_column_null :users, :name, false
    change_column_null :users, :email, false
    change_column_null :users, :password, :string, false
  end
end

false → NotNull制約を付与する
true → NotNull制約を付与しない

change_column_null :テーブル名, :カラム名, false or true

こっちは、記述量が少なくて直感的な気がする!

change_column_defaultメソッドもあるらしいが、追々調べていこう

参考記事

Railsガイド
https://qiita.com/MOssan-32/items/89afc9e4375215f8b5d2
https://qiita.com/akinov/items/852fe789fe98a44350a9

8
6
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
8
6