leaning diary Rails

【Learning Diary38】validateとvalidates

【Learning Diary38】validateとvalidates

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

 

-leaning diary, Rails
-