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 のようなイメージ。
また、超絶駆け出しエンジニアなので、突っ込みどころがあればご指導・ご鞭撻いただけると幸いです。