12
5

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.

【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の判定を行う方法を現役エンジニアが解説【初心者向け】

12
5
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
12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?