Railsで時間制限を設けてデータを消す方法

Railsで時間制限を設けてデータを消す方法

最近RailsでWEBアプリを作ってます。わからなかったことがあって調べても
みつけにくかったのでここにまとめておきます。

状況としてはデータベースに保存したデータを一定時間ごとに消したいとかっていうときです。ほっておくとデータがサーバの容量を食い尽くしてしまうとき、かつ昔のデータを消しても支障がないときなど。

Railsではモデル作成時に自動で"created_at"と"updated_at"という風に
作成時間と更新時間を追あkしてくれるのでこれを活用します。

def auto_delete
    @posts = Post.where("created_at<?", Time.now - (5.minutes))

    @posts.each do |post|
        post.destroy
    end
end

関数内一行目では現在時刻から5分前より前に作られたデータを取得しています。

数字.year,  # 年
数字.month, # 月
数字.day,   # 日
数字.hour,  # 時
数字.min,   # 分
数字.sec,   # 秒

引く時間を指定するときには上記のように他の単位も使えます。

eash文では各要素を取り出して、自分がしたい処理を行えます。
まとめて消したいとかならこの文はいらないです。

画像などのデータをデータベースに格納しているのであればeach文内で削除の処理を
行えばいいと思います。

まだまだ駆け出しなので間違い等あればご指摘お願いいたします。 それでは。