Ruby on Railsを勉強中です。

セッション情報はDB(active_record_store)に格納しているのですが、このセッション情報のうち古いもの(1日前とか)を定期的に削除するにはどのようにすればいいんでしょうか?
sessionsテーブルで古いものをdeleteすればいいのは分かっているのですが、Railsからどのようなコードを書けばよいのか?(もしくはそんな方法はないのか?)が知りたいです。

RoRバージョン 2.0.2

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/09/03 21:26:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:moro No.1

回答回数23ベストアンサー獲得回数10

ポイント60pt

http://d.hatena.ne.jp/asin/4797336625/morodiary05-22

リンクは自分で書いた書籍の宣伝(アサマシつき)です。

ご質問の内容は、script/consoleやRailsアプリ内から以下のような感じでやればOKです。1.days.agoを適宜書き換えてください。

CGI::Session::ActiveRecordStore::Session.delete_all(["sessions.updated_at < ?", 1.days.ago])

実際はcronなんかで実行すると思いますが、その場合はscript/runnerを使うとよいと思います。

#!/bin/sh
cd path/to/app
ruby script/runner 'CGI::Session::ActiveRecordStore::Session.delete_all(["sessions.updated_at < ?", 1.days.ago])'

以下宣伝。

というようなことを冒頭の書籍にも書いたので(「36. セッションを無効にする」)興味がありましたらご覧ください。

id:tak-n

ありがとうございます。

まさに期待していた回答です。

さっそく実装してみたいと思います。

#書籍の購入も検討します。(笑)

2008/09/03 21:25:49

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません