はじめに
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 両方設定した方が安全
おわりに
調べてみるとなるほどなと思いました。プログラミング学習をしていると横文字が多くて訳が分からなくなります。疑問を感じたら、その都度調べていく事が大事だと感じました。
そしてその調べた先にも横文字があるという・・・・・・。
参考