allow_nilの代わりにallow_blankを使えばいいよ
Railsのフォームのバリデーションで文字列を特定のフォーマットで入力して欲しいんだけど未入力はあり。
そんな時に使うのが:allow_nilというオプションなのだけど、このオプションをつけても空文字列は許してくれない(フォームに項目があると未入力でも空文字列が送られてくる)のでそのままでは使えずbefore_validationと組み合わせて使っていた。
validates_format_of :url, :with => URI.regexp(['http', 'https']), :allow_nil => true
def before_validation
self.url = nil if self.url.blank?
end
でも2.0系からは:allow_blankが追加されて簡単になっていたようだ。
validates_format_of :url, :with => URI.regexp(['http', 'https']), :allow_blank => true
なんか勉強し直さないといけない気がしてきた・・・