質問: Ruby on Railsの勉強をしています。 現在、Rails Tutorialのサンプルアプリケーションが完成し、CSSをいじったり、プロフィールが書けるように機能を足したりしています。 次は、今流行りの「投稿が時間が経つと消える」機能を付けることに挑戦しています。 具体的に、 1ユーザーが投稿する。 2投稿にカウントダウンが付く。 330分経つと消える。 というのをやってみたいです。 ですが、ググってみたり、他の質問サイトを調べても分かりませんでした。 カウントダウンなしでもいいので、とにかく時間が経つと投稿が消えるようにしたいです。 わかる方いたら是非ご教授ください。 宜しくお願い致します。 Ruby on Rails 4.2.2
回答: ◾︎30分経つと消える機能 完全にDBから削除する方法と、画面に表示しないだけでDBには保持する方法でつくり方が変わると思います。 画面に表示させないだけであれば、 1投稿に投稿日時項目を持たせてデータ取得処理に投稿日時が30分以内のものだけ取得、とする もしくは 2投稿に投稿日時項目をもたせて、投稿日時が30分を超えた投稿に非表示フラグを立てるバッチを毎秒ながし、投稿取得処理で非表示フラグが立っていない投稿だけを取得する DBからも削除させる場合は 3投稿に投稿日時項目をもたせて、投稿日時が30分を超えた投稿を削除するバッチを毎秒ながす 形になると思います。 railsの知識のみで完結させるには1がおすすめです。(データ量が多くなると負荷がかかるので実践には向かないと思いますが) 定期実行バッチのつくり方はOSによりますので、わからなければ調べてみてください(^^)。