4ヶ月ぶりな毎日つけたい記録です。ご無沙汰してます。
先日Railsでちょっとハマったことがあったのでこんなこともあるんだよ、真似しちゃだめだよ、って話を書いておきます。
とある会社のシステムのテスト中に挙動がおかしい処理があった問題のコードは下記の様な感じ
def initilizer
@now_time = Time.zone.now
end
def foo
hoge = Hoge.new
hoge.nantara_at = @now_time
hoge.save
end
def bar
hoge = Hoge.find_by(id: id)
return if (hoge.nantara_at == @now_time)
...etc
end
そもそも時刻比較がナンセンスだなぁとは思ったんだけど、まぁやりたいことはなんとなくわかったのでそれを直そうとは思わんかったのだけど、実はこの時刻比較がやっちゃいけないところだった。
1回データベースに入れて取り出すと一致しませんでした。
冷静に考えると多分データベースに入れたときに落ちた情報があるんだろうなぁって思えるんだけど、現象を見てすぐは???ってなりました(どちらもデータ元は一緒でmsまで一緒だったので。。。)
普通やんないけどTime比較の==はきをつけましょー。