0
1

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.

migrationファイルのnull:falseとは

Last updated at Posted at 2022-02-11

はじめに

Qiitaへの初投稿になります。
学習していて気になったので調べてみました。

意味

migrationファイルのnull:falseとは指定したカラムがデータベースに空の状態で保存されることを防ぐものです。

class CreatePosts < ActiveRecord::Migration[6.0]
  def change
    create_table :posts do |t|
      t.string :name,    null: false
      t.text :text,      null: false
      t.timestamps
    end
  end
end

上記の場合nameカラム、textカラムを空で保存できない設定になります。

presence: true

似ているものでmodelにバリデーションとして記述するpresence: trueがあります。
意味は指定したカラムが空の状態で保存されることを防ぐ。

class Post < ApplicationRecord
  validates :name, presence: true
  validates :text, presence: true
end

こちらの記述もnameカラム、textカラムを空で保存できない設定です。
似ているというか意味は同じですね。

なぜ似たようなものがあるのか?

presence: trueはRailsアプリでの設定で、これだけの設定だとデータベースへSQLで直接空のデータを保存できてしまいます。

  • migrationファイルはデータベースに対する設定
  • モデルのバリデーションはRailsに対する設定

null: false 、 presence: true 両方設定した方が安全

おわりに

調べてみるとなるほどなと思いました。プログラミング学習をしていると横文字が多くて訳が分からなくなります。疑問を感じたら、その都度調べていく事が大事だと感じました。
そしてその調べた先にも横文字があるという・・・・・・。

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?