0

"10.02.2012"または"10-02-2012"自分のモデルで、ヨーロッパの日付形式を検証したいと考えています。

したがって、私はこの行を使用しています:

validates_format_of :matchdate, :with => /\A\d{2}(\.|-)\d{2}(\.|-)\d{4}\Z/i, :message => "Date incorrect"

正規表現は正しいに違いありませんが、何を入力しても常に が返されます"Date incorrect"

使用するフォームから入力を取得します

<%= f.text_field :matchdate, :size => '10' %>

正しい形式を出力する Datepicker UI と一緒に。(「.」と「-」の両方の区切り文字を使用したいのは、両方のバージョンを許可する必要がある別のスコープで日付を収集するためです。)

パラメータも正しいように見えます。そこには次のように書かれています:"...matchdate"=>"29.09.2012"

私は何を間違っていますか?

4

1 に答える 1

1

からモデルの新しいインスタンスを開始するとparams、Rails は日付をDateオブジェクトにキャストします (私のモデルを使用した例):

i = Invoice.new due_date: "29.09.2012"
i.due_date                              #=> Sat, 29 Sep 2012 
i.due_date.class                        #=> Date 

Dateただし、 で検証することはできませんRegex。実際に必要なのは

validates :matchdate, presence: true

Railsがそれをnil解析できず、必要に応じてカスタムバリデーターを追加する可能性があるためです。

于 2012-09-18T10:32:53.937 に答える