質問: Twitterのようなユーザーが投稿できるSNSサイトを作っています。 具体的には、Ruby on Rails Tutorialのサンプルアプリケーション完成直後で今から機能を足そうとしている段階です。 ユーザーが投稿してから、一定時間(30分)が経過したら自動的にデータを削除する機能を実装したいです。 いろいろ調べて、wheneverを使って試してみたり、expires_inを使って試してみたりしたのですが、具体的な書き方が分からずどうしても消せません。 wheneverの場合だと、schedule.rbにどのように書けば良いか。 また、その他に方法があれば是非教えてください。 大変お手数ですが、ご回答いただけますと助かります。
回答: 色々書こうかと思いましたが terateil ここにまとまっていました。 質問する前に、まずkeywordで調べましょう 一応方針としては 1どうせ、見るときに消えてればいいよねー ということで、controller側で一覧を見るときに判定して消す before_actionとかで 2定期的(1分おきとか)に監視してそのとき30分を超えているのを消す wheneverを利用して ``` every 1.minute do runner: 30分過ぎたのをdeleteするメソッド end ``` 3非同期処理を使い30分後に自分自身を削除させる。 active_jobを使って遅延呼び出しをする Active Jobを使ってみよう どれがいいかは、システムによりますが、 正直、システムが小規模なうちはどれでも変わりません。