[Rails] 1つの項目に必須、その他バリデータをつける際の注意

移転しました。

よくフォームを作成していると、1つの項目に必須入力と長さチェックなどのバリデータをかけることになる。

しかし単純に

  validates_presence_of :family_name_kana, :message=>ERR_REQUIRE
  validates_size_of :family_name_kana, 
                    :maximum => 30, 
                    :too_long=>"は30" + ERR_LENGTH

とやってしまうと、まったく入力していない場合、必須と、長さのエラーメッセージが両方でてしまいよろしくない。
そんな時は以下のようにかくとよい。

  validates_presence_of :family_name_kana, :message=>ERR_REQUIRE
  validates_size_of :family_name_kana, 
                    :maximum => 30, 
                    :too_long=>"は30" + ERR_LENGTH,
                    :if => Proc.new { |u| !u.family_name_kana.blank?}

:if をつけて、blankする。これで入力があった時だけ、長さチェックを行う事になる。