LoginSignup
10
6

More than 1 year has passed since last update.

【Rails】booleanとは

Posted at

booleanとは

booleanとは、一般的には真と偽のような2つの状態を表すデータ型。stringintegerのようにマイグレーションファイルに記述することができる。

boolean型のカラムを追加する時の注意点

ruby.rb
                                                                         ↓NULL(Rubynil)が設定されることを禁止するオプション
t.boolean :checked, null: false, default: false
                    ↑デフォルト値をfalseに設定

⚠️注意点
デフォルト値を設定しておいた方が良いこと
NOT NULL制約を設けること

デフォルト値を明示的に設定しなかった場合、新しいカラムにはNULが入る。
データベース(SQL)の世界において、NULLは特殊な存在である。

NULLfalseの意味でもなく、「空(から)」の意味でもない。
NULL「まだ決まっていないから何も評価できない」の意味。(NULLの意味づけは文献によって異なる)

つまり、「true でも false でもない状態」 を表す。
よって、Boolean型のカラムにNULLが入ると、「true / false / NULL」の3つの状態が存在することになる。

しかし、Rubyでは 「nil と false はどちらも偽」 として扱われる。

このようにデータベースとRubyでは NULL/nilの取り扱いルールが異なっているので、データの検索の考え方が非常にややこしくなる。そのための注意点として上記の2点はしておいた方が良い。

presenceは使えない

boolean型のカラムについてバリデーションを設定するときにpresence: trueとしてしまうと、値が入っているはずなのにエラーになる。

presenceの定義上、falseという値では引っかかってしまう。

boolean型のカラムに値が入っていることを確かめたいときは、inclusionを使う。

model/ruby.rb
class Post < ApplicationRecord
  validates checked, inclusion: [true, false]
end

参考記事

Boolean型のカラムを追加するときは必ずデフォルト値を設定しよう
boolean型カラムが他の型と違うところ
Rubyでbooleanの判定を行う方法を現役エンジニアが解説【初心者向け】

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