LoginSignup
0
1

【Rails】Boolean 型を入力必須にする

Posted at

概要

RailsBoolean 型の値を入力必須にしたいときに presence: true を使っても期待通りに動作しませんでした。この記事ではその原因と対処法について説明します。

原因

validates :column, presence: true

このように記述すると false を選択した場合には値が入力されていないと認識されてしまい、バリデーションエラーが発生します。presence: truefalse を無視してしまうため、Boolean 型の値には適していません。

対処法

validates :column, inclusion: { in: [true, false] }

inclusion バリデーションを使って truefalse のどちらかの値が含まれているかを確認します。これにより false も有効な値として認識されるため、正しくバリデーションが行われます。

まとめ

Boolean 型の値を入力必須にしたい場合には presence: trueではなく、inclusion: { in: [true, false] } を使います。これにより false も有効な値としてバリデーションを通過することができます。

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