fluid_27’s blog

勉強した内容をアウトプットするためのブログ

バリデーションとは

 

 

Railsを勉強していると出てくる「バリデーション」という言葉。

バリデーションとは何か、と具体的な使用例についての備忘録。

 

【バリデーションとは】

RailsでDBに保存する際、無意味なデータや想定外のデータの登録を防ぐための機能

 

【基本的な書き方】

モデルクラスにvalidatesメソッドで指定して行きます。

validates :カラム名(シンボルで指定), 検証ルール(シンボルで指定)

 

【具体的な使用例】

【空データを利用できないようにする: presence】

presence

class User < ApplicationRecord

   validates :name, presence :true

end

 

 

【文字数の制限をかける : length】

length

class User < ApplicationRecord

   validates :name, presence :true, length: { maximum: 50}

end

 

 

【数値のみを許可する : numericality、空を許可する : allow_blank】

numericality …数値のみを許可する

allow_blank  …空を許可する

使用例)年齢の記入など

class User < ApplicationRecord

   validates: name, presence: true, length: { maximum: 50}

   validates: age, numericality: { only_integer: true }, allow_blank: true

end

 ageは整数のみ、空でも可。という条件にしたかったので、上記のような書き方。

numericalityはデフォルトだと小数点も通してしまうので、only_integer: trueも追加。

空でも構わないので allo_blank: true。

 

 

【同一データのみを許可する: uniqueless】

uniqueness

使用例)ユーザー1人に対してメールアドレスの登録を1つしか許さない場合など

class User < ApplicationRecord

   validates: name, presence: true, length: { maximum: 50}

   validates: age, numericality: { only_integer: true }, allow_blank: true

   validates: email, presence: true, uniqueness: true

end

 

 

【特定の値が含まれているか確認する inclusion】

inclusion

class User < ApplicationRecord

   validates: name, presence: true, length: { maximum: 50}

   validates: age, numericality: { only_integer: true }, allow_blank: true

   validates: email, presence: true, uniqueness: true

   validates: gender, presence: true, inclusion: { in: 1..3 }

end

 上記ではgenderというカラムに1〜3までのデータが格納されているという前提です。

1:men, 2: women, 3: other のようなイメージ。

 

 また、超絶駆け出しエンジニアなので、突っ込みどころがあればご指導・ご鞭撻いただけると幸いです。