allow_nilの代わりにallow_blankを使えばいいよ

2008-08-15
2011-01-08
かなり古い記事です。現在も有効な内容であるかどうか分かりませんのでご注意ください。

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

なんか勉強し直さないといけない気がしてきた・・・

Profile

フルスタック気味のフリーランスプログラマー。

どちらかと言うと得意はインフラ構築とサーバーサイドプログラミングですが、フロントエンドもぼちぼちやっています。

最近の興味範囲はWordPress、AWS、サーバーレス、UIデザイン。

愛車はセロー。カメラはペンタックス。旅好きです。横浜在住。