目次
Ruby on Railsで入力チェック(validates)を実装する
Railsでは、入力データを検証するためのメソッド「validates」が用意されており、「validates」をmodelクラスに定義するだけで、入力チェックを実装することができます。
本記事では、「validates」メソッドを利用した入力チェックの実装方法について紹介します。
スポンサーリンク
必須チェック
presenceでカラムにデータが存在するか(空でないこと)を検証します。
validates :カラム名, presence: true
[modelクラスの例]
class User < ApplicationRecord validates :name, presence: true validates :address, presence: true validates :phone, presence: true end
文字数チェック
lengthでカラムの長さを検証します。
validates :カラム名, length: {長さ制限のオプション}
[長さ制限のオプションの種類]
オプション | 説明 | 指定例 |
maximum | 長さの上限 | maximum: 10 |
minimum | 長さの下限 | minimum: 1 |
in | 長さの範囲 | in: 10..12 |
is | 長さがの指定 | is: 10 |
[modelクラスの例]
class User < ApplicationRecord validates :name, length: {maximum: 10} validates :address, length: {minimum: 1} validates :phone, length: {in: 10..12} end
数値チェック
numericalityで小数を含む、数値であることを検証します。
validates :カラム名, numericality: true
[modelクラスの例]
class User < ApplicationRecord validates :phone, numericality: true end
スポンサーリンク
整数チェック
numericalityで小数を含まない、数値であることを検証します。
validates :カラム名, numericality: { only_integer: true }
[modelクラスの例]
class User < ApplicationRecord validates :phone, numericality: { only_integer: true } end
重複チェック
uniquenessでデータが重複していないかを検証します。例えばユーザー登録時のメールアドレスなどのように、同じデータは1つだけであることを検証したい場合に使用します。
validates :カラム名, uniqueness: true
大文字/小文字の区別をしない場合は「case_sensitive: false」を指定します。
validates :カラム名, uniqueness: { case_sensitive: false }
[modelクラスの例]
- 大文字/小文字の区別あり
class User < ApplicationRecord validates :address, uniqueness: true end
- 大文字/小文字の区別なし
class User < ApplicationRecord validates :address, uniqueness: { case_sensitive: false } end
空を許可する
allow_blankでカラムのデータが空であることを許可します。このオプションだけを指定しても意味はなく、他のオプションと一緒に使う必要があります。
validates :カラム名, allow_blank: true
[modelクラスの例] ※長さが4桁以上必要だが、空は許可する
class User < ApplicationRecord validates :name, length: {minimum: 4}, allow_blank: true end
正規表現チェック
formatで正規表現と一致するかを検証します。
validates :カラム名, format: { with: 正規表現 }
[modelクラスの例] ※英文字の正規表現
class User < ApplicationRecord validates :name, format: { with: /\A[a-zA-Z]+\z/ } end
終わりに
本記事では「入力チェック(validates)の実装方法」について紹介しました。
次回は、CSSの「フレームワーク」であるBootstrapの導入手順を紹介します。
- 準備編:Ruby on Railsの開発環境構築
- 入門編:Ruby on Railsで”Hello World”を作成する
- 基本編1:超便利ScaffoldでCRUDを作成する方法
- 基本編2:入力チェック(validates)の実装方法
- デザイン編1:RailsでBootstrapを導入する方法
- デザイン編2:RailsでAdminLTEを導入する方法
- 実践編1:Rails + AdminLTEで一覧画面を作成する
- 実践編2:Rails + AdminLTEで登録画面を作成する
- 実践編3:Rails + AdminLTEで編集画面を作成する
- 実践編4:Rails + AdminLTEで詳細画面を作成する