Railsはvalidationを使って必須等の色々なデータの制約を付与することが出来ますが、それらに該当しない独自のvalidationを付与する方法をメモφ(..)
手順
テーマ:生年月日の過去日を不可にする
今回は、生年月日に過去日が入力された際にエラーとなるように独自のvalidationを追加していきます。
前提条件
生年月日はUser
モデルに属し、データ構造は下記となっていることを想定します。
論理名 | 物理名 | 型 |
---|---|---|
生年月日 | birthday | date |
独自のバリデーションを実装する
独自のバリデーションを追加するのは意外と簡単でした!User
モデルにメソッドを定義し、それをvalidate
で設定するだけです:D
class User < ApplicationRecord # 省略 # validateに定義したメソッドを設定 validate :birthday_cannot_be_in_the_future # 生年月日の未来日のチェックメソッド def birthday_cannot_be_in_the_future # 生年月日が入力済かつ未来日(現在日付より未来) if birthday.present? && birthday > Date.today # エラー対象とするプロパティ(birthday)とエラーメッセージを設定 errors.add(:birthday, "can not specify your future date as your birth date.") end end end
参考
以上