1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RailsのTime.zone.parseでハマった

Posted at

Time.zone.parseに渡す引数は日付っぽいものであり、かつvalidであればきちんとparseされ、
日付として認識されるフォーマットでありつつも値がおかしい(2020-99-99 99:99:99など)場合はArgumentErrorがraiseされ、
そもそも日付として認識されない文字列はnilを返す。
nilを返すんですね。(2回目)

最後の場合もArgumentErrorがraiseされる想定だったためハマった。

要件としては「ユーザーが自由入力できる入力欄において、日付としてvalidな文字列であればそのまま保存し、invalidな文字列であればエラーを吐かせる」ものだったのであまりないパターンかとは思う。

参考

リファレンス

https://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html#method-i-parse
20:00:00とかもいけるっぽい(日付は現在日付になる)

Qiita

https://qiita.com/slightair/items/fa5f63016c0c848111a9
ここでもnilになる挙動について少し触れられている

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?