4

アクティブなレコード ストアからの削除に問題があります。

セッションデータに基づいて削除したい:

ActiveRecord::SessionStore::Session.find(:all).each do |s|
  if s.data[:userid] == 1234
    s.destroy
  end
end

動作していないようですが、:

ActiveRecord::SessionStore::Session.delete_all(["updated_at < ?", 12.hours.ago])

動作しているようで、:

ActiveRecord::SessionStore::Session.find(:all).each do |s|
  if s.data[:userid] == 1234
    ActiveRecord::SessionStore::Session.delete_all("session_id = ?", s.session_id)
  end
end

また動作しません。

バージョン Rails 2.3.2、ruby 1.8.7 を実行しています。

4

1 に答える 1

3

Active Record の delete メソッドに、削除したいオブジェクトの ID を渡すだけです。

ActiveRecord::SessionStore::Session.delete(1234)

別の注意として、上記の例で .data 属性がどこから来ているのかを確認してください。Session.find(:all) は Session オブジェクトの配列を返し、それを反復処理します。デフォルトのセッションストアをハッキングして追加しない限り、セッションにはユーザーID列がありません。

于 2010-07-09T07:06:41.177 に答える