久々にRailsの挙動でハマったこと

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比較の==はきをつけましょー。