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