valides_date_time pluginで日本の時間表記を通す

日付のvalidateをどうしようかなと思ったら、すでにpluginでありました。

./script/plugin install validates_date_time

でインストール。

validates_date :birthday

というふうに使うんだけど、このプラグイン。2008/1/1というふうな日本の日付表記が通りません。で、下のように加えるとOK。

/validates_date_time/lib/parser.rb

 10           year, month, day = case value.strip
 11             # 22/1/06, 22\1\06 or 22.1.06
 12             when /\A(\d{1,2})[\\\/\.-](\d{1,2})[\\\/\.-](\d{2}|\d{4})\Z/
 13               ValidatesDateTime.us_date_format ? [$3, $1, $2] : [$3, $2, $1]
 14             # 22 Feb 06 or 1 jun 2001
 15             when /\A(\d{1,2}) (\w{3,9}) (\d{2}|\d{4})\Z/
 16               [$3, $2, $1]
 17             # July 1 2005
 18             when /\A(\w{3,9}) (\d{1,2})\,? (\d{2}|\d{4})\Z/
 19               [$3, $1, $2]
 20             # 2006-01-01
 21             when /\A(\d{4})-(\d{2})-(\d{2})\Z/
 22               [$1, $2, $3]
 23             # 2008/4/1 or 2008/04/01 *********ここ加えた。*********
 24             when /\A(\d{4})\/(\d{1,2})\/(\d{1,2})\Z/
 25               [$1, $2, $3]
 26             # 2006-01-01T10:10:10+13:00 **********ここまで**********
 27             when /\A(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\Z/
 28               [$1, $2, $3]
 29             # Not a valid date string
 30             else
 31               return nil
 32           end