概要
updated_atが24時間過ぎていたら更新できないよーっていう設定がしたかったのでメモ感覚でまとめました
環境
Ruby 2.6.1
Rails 5.2.3
Docker
DateTime.now
(DateTime.now - hoge.updated_at) > 1
でいけるっしょって思ってやってみたら expected numeric
エラー
あらまぁ ちゃんとフォーマット指定しないとだめっぽい
というわけで
time = (DateTime.now).strftime("%Y/%m/%d %H:%M:%S")
user = hoge.updated_at.strftime("%Y/%m/%d %H:%M:%S")
raise "sugiteruyo-" if ((time.to_time - user.to_time) / 60 /60 /24).to_i >= 1
datetime型の値をstrftimeで整形して変数に入れて DateTime.now
と user
を引いて時間を修正して1日(24時間)過ぎていたらアウトって感じしました。
まとめ
フォーマット指定は大事
もし間違えてたり、こっちのがいいよーってのがございましたら教えていただけると幸いです!!!
追記(2019-10-16 21:36:35)
@github0013@githubさんと@hogushi12兄貴のおかげでむちゃくちゃ簡単にできました
コメント参照
raise "更新後、24時間以上経過" if Model.updated_at < 1.day.ago