こたつとみかんとプログラミング

33才実務未経験ですがウェブエンジニアにジョブチェンジするために勉強したことをアップするためのブログです。

migration ファイルの null: false について

コードレビューにて、migration ファイルに null: false をつけたほうが良いという指摘を受けたので、メモ。
結論としては、null: false も presence: true も両方設定したほうが良い。

null: false

指定したカラムがデータベースにカラの状態で保存されることを防ぐ。

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :reviews do |t|
      t.string  :name
      t.string  :email null: false
      t.timestamps null: false
    end
  end
end

presence: true

ActiveRecord のバリデーション。(Railsアプリケーションの判定)
指定したカラムが空の状態で保存されることを防ぐ。

class User < ApplicationRecord
  validates :name, presence: true
end

presence: true は Rails アプリケーションの判定であるが、直接DBにデータを登録しようと思えばできてしまう。そこで、DB へ空のデータが保存できないようにするために、null: false が必要になってくる。