フォームで指定された形式で入力してほしいけど必須入力項目では無いとき
validates_format_ofで未入力を許可しようと思ってもallow_nilではできない
validates_format_of :url, :with => /[0-9A-Za-z_\/\-\.\:]/, :message => "が不当な形式です", :allow_nil => true
フォームで未入力だった場合は空文字として扱われるのでallow_nilでは通過できない
ifオプションを使って指定するらしい
validates_format_of :url, :with => /[0-9A-Za-z_\/\-\.\:]/, :message => "が不当な形式です", :if => Proc.new{|record| !record.url.blank?}
ただRails2系からはallow_blankが実装されたので楽にできる
validates_format_of :url, :with => /[0-9A-Za-z_\/\-\.\:]/, :message => "が不当な形式です", :allow_blank => true