【Rails】カスタムバリデーションを設定する
動機
「xxxを入力してください」というエラーメッセージが切ない。
UXを向上させるため、人間味のあるエラーメッセージを設定したい。
どうするのか
こんな感じのバリデーションを設定していたとします。
class User < ApplicationRecord validates :name, presence: true validates :age, presence: true, numericality { only_integer: true, greater_than_or_equal_to: 0 } end
カスタムバリデーションを行うメソッドを追加します
class User < ApplicationRecord validates :name, presence: true #validates :age, # presence: true, # numericality { only_integer: true, greater_than_or_equal_to: 0 } # カスタムバリデーションを設定 validate :validate_age # カスタムバリデーションを定義 def validate_age @errors[:age] = "年齢には0以上の数字を入力してください" if age < 0 end end
実際にはこんな感じになります。
https://github.com/tarunama/rails-exam/pull/2/files