validates
RailsのActive Recordには、バリデーション(検証: validation)機能があります。
最もシンプルでスタンダートな書き方は、「validates」に、属性と制限を記述する方法です。
class Person < ApplicationRecord validates :name, presence: true end
Active Recordには、定義済みのバリデーションヘルパーが多数用意されています。
どのヘルパーも任意の数の属性を受け付けることができるので、1行のコードを書くだけで多くの属性に対して同じバリデーションを実行できます。
利用可能なデフォルトヘルパーのリストは以下で確認できます。
参照:ActiveModel::Validations::HelperMethods
カスタムバリデーションメソッドにはValidate
カスタムメソッドを追加したい場合は、validatesではなくvalidateにメソッド名を渡します。
validatesとvalidateは併用もできます。
class Person < ApplicationRecord validates :name, presence: true validate :age_must_be_at_least_10, unless: -> { name.include?(".exc") } private def age_must_be_at_least_10 if age.present? && age < 10 errors.add(:age, "は10歳以上である必要があります") end end end