config/initializers/session_store.rb ファイルに次の内容を持つ Rails アプリがあります。
ActionController::Base.session = {
:key => '_app_session',
:secret => 'a really long string here',
:expire_after => 2.minutes
}
ActionController::Base.session_store = :active_record_store
したがって、通常の操作では、セッションごとにデータベースに作成された ActiveRecord オブジェクトが表示されます。問題は、リクエストに対して常にセッションを作成したいわけではないということです。自動化されたリクエストに対してセッションの作成をオフにできるようにしたいと考えています。データベースには、自動化されたリクエストごとに 1 つずつ、何千ものセッション レコードがあります。Rails 2.3.3 より前では、次のことが可能でした。
class ApplicationController < ActionController::Base
session :off
...
end
しかし、Rails 2.3.3 では "session :off" が非推奨になりました。これは、セッションが遅延ロードされるようになったためです。セッションを使用しない場合、セッションは作成されません。問題は、セッション オブジェクトが常に sessionstore.rb ファイルに割り当てられているため、常に作成されているようです。構成ファイルからセッション割り当てブロックを削除すると、自動化された要求の後にセッション レコードが表示されません。私の質問は、リクエストが自動化されていない場合にのみセッションを条件付きで割り当てることができるように、session_store.rb からセッション ハッシュへの構成割り当てを ApplicationController クラス (または他の場所) に移動するにはどうすればよいですか? コントローラー ハンドラーが実行される前に、セッション構成データが必要になるのではないかと心配しています。セッションキー値の割り当てはどこに置くのですか?
助けてくれてありがとう。