railsでモデル内にvalidationを書く

前回の記事では、共通化したvalidationの書き方でした。

mikamisan.hatenablog.com

今回は、単一のモデルでしか使わないvalidationの書き方になります。

書き方

class User < ActiveRecord::Base
  validate :email_validate

  def email_validate
    valid_address = /\A[a-zA-Z0-9_\#!$%&`'*+\-{|}~^\/=?\.]+@[a-zA-Z0-9][a-zA-Z0-9\.-]+\z/
    unless email ←ここはカラム名になります =~ valid_address
      errors.add(:body, '正しいアドレスを入れてください。')
    end
  end
end

これでemailのvalidationが完成します。

まとめ

前回の書き方は、共通のvalidationのカラムの値を確かめるためだけのものを作成しました。

今回は、単一のモデル内での処理になります。

使う場所が単一のモデル内であれば、モデル内で完結しておけば、どこで使用しているのかの判断をしなくて良くなります。

このvalidationはどこで使う?という、観点を持ち、適切な場所に書いていくのが、重要です。