miyohideの日記

技術的なメモなどを記しています

2023年4月3日 Railsで日付けのカスタムバリデーターって必要なくね?

Railsで日付けのカスタムバリデーターって必要なくね?

こんな日記を書いたんだけれども...

miyohide.hatenadiary.jp

たまたまテストを書いていたら、うまく動かずにあれ?ってなった。

ハイフンで区切らずともきちんと日付として処理される(startの部分)。

irb(main):008:0> Todo.new(name: "aaa", start: '20220101', end: Date.today+1, progress: 10)
=> 
#<Todo:0x0000ffffaa936a48                                                                            
 id: nil,                                                                                            
 name: "aaa",                                                                                        
 end: Tue, 04 Apr 2023,                                                                              
 progress: 10,                                                                                       
 created_at: nil,                                                                                    
 updated_at: nil>                                                                                    
irb(main):009:0>

おかしいものはnilがはいる(startの部分)。

irb(main):001:0> Todo.new(name: "aaa", start: "2022/0101", end: Date.today+1, progress: 19)
=> 
#<Todo:0x0000ffff7a0813b0                                                                                     
 id: nil,                                                                                                     
 name: "aaa",                                                                                                 
 start: nil,                                                                                                  
 end: Tue, 04 Apr 2023,                                                                                       
 progress: 19,                                                                                                
 created_at: nil,                                                                                             
 updated_at: nil>                                                                                             
irb(main):002:0> 

RubyのDate.parseがめっちゃ賢いのをそのまま利用すれば良いだけだった気がする。

docs.ruby-lang.org