例えば電話は入力必須だけれども、FAXは必須ではない。
だけど書式チェックはしたい。というような場合。
単純にvalidates_format_of を指定すると毎回書式チェックが走ってしまう。
入力されたときだけチェックしたいんだけど。
validates_format_of :fax, :with=> /\d{2,4}-\d{2,4}-\d{4}/ ,
:message=> "の書式が正しくありません。", :if => :fax?
とする。
■今日のポイント
・:if の条件がtrueならvalidateする。
・ActiveHeartだとエラーメッセージが「不正」の単語になってしまうのでmessageで再指定。
・"#{:name}の書式が正しくありません。"となるので、冒頭の項目名は不要。
ついでに別件。numericalityだけだと小数が通ってしまうので
整数だけにしたいときは:only_integer =>trueを指定するべし。
validates_numericality_of :price, :only_integer =>true
コメント