calendar_date_selectでvalidate

すんばらしいプラグインな「calendar_date_select」なんだけど、validateで悩んでいた。

validates_presence_of :hoge_day

こうすると「空白?」を確認してくれるが、日付の正当性は見てくれない。
 
そこで

validates_format_of :hoge_day, :with=>/\d{4}-\d{2}-\d{2}/

こうしてあげるとフォーマットを確認してくれる。理由は分からないけど、ありえない日付も確認してくれるようになった。
 
「必ず入力!」は上記でOKだけど「入力するときは正しく!」と曖昧な場合に考えた。

def validate
  if hoge_day.blank?
    hd = hoge_day.to_s.split("-")
    unless Date.valid_date?(hd[0].to_i, hd[1].to_i, hd[2].to_i)
      errors.add(:hoge_day, "ありえない日付を入力するんじゃない!")
    end
  end
end