我有一个 Rails 应用程序,它在 config/initializers/session_store.rb 文件中包含以下内容:
ActionController::Base.session = {
:key => '_app_session',
:secret => 'a really long string here',
:expire_after => 2.minutes
}
ActionController::Base.session_store = :active_record_store
因此,在正常操作期间,我们会看到在数据库中为每个会话创建的 ActiveRecord 对象。问题是我们并不总是希望为请求创建会话 - 我们希望能够关闭自动请求的会话创建。我们在数据库中看到了数千条会话记录,每个自动请求都有一条。在 rails 2.3.3 之前,以下是可能的:
class ApplicationController < ActionController::Base
session :off
...
end
但现在在 Rails 2.3.3 中,“session :off”已被弃用,因为会话现在是延迟加载的——如果你不使用它们,它们就不会被创建。问题似乎是会话对象总是在 sessionstore.rb 文件中分配,因此总是被创建。如果我从配置文件中删除会话分配块,那么在自动请求之后不会出现会话记录。我的问题是,如何将配置分配移到 session_store.rb 中的会话散列并移到 ApplicationController 类(或其他地方)中,只有在请求不是自动化的情况下才能有条件地分配会话?我担心在执行控制器处理程序之前可能需要会话配置数据。我会将会话键值的分配放在哪里?
提前感谢您的帮助。