2011-01-08 12 views
0

the regex works fineであっても、Rails 3で簡単な検証ができない場合があります。有効な形式であっても、検証は失敗します。Rails 3 validates_format_ofが単純な正規表現では機能しない

モデル:

validates_format_of :start, 
    with: /\A[0-9]{2}\/[0-9]{2}\/[0-9]{4}\z/, 
    message: "Invalid date format" 

アサーション:

Event.new(start: "12/10/2010").valid?.should eq(true) 

アサーションがvalid?戻りfalseので、失敗していること。

私には何が欠けていますか?

+1

多分新しいイベントの何かがイベントを無効にしていますか? – Zabba

+0

これはYAMLですか、通常のルビーですか? yamlの場合は、行末にコンマを置いていますか? – Rekin

+0

@Rekin:Ruby 1.9ハッシュ構文:http://blog.peepcode.com/tutorials/2011/rip-ruby-hash-rocket-syntax – iain

答えて

3

startDate型であるため正規表現に失敗し、オブジェクトが文字列でインスタンス化されると、ActiveRecordによって自動的にDateに変換されます。バリデーターがそれを受け取るまでには、もはや文字列ではないので、マッチはありません。