我有一个 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 类(或其他地方),其中仅当请求不是自动执行时才可以有条件地分配会话?我担心在执行控制器处理程序之前可能需要会话配置数据。我应该把会话键值的分配放在哪里?
预先感谢您的任何帮助。
配置/初始化程序是一次性配置,它们通常仅在启动时运行一次。根据文档,延迟加载只会在“session”对象被触摸时初始化会话在请求期间.
您确定在请求周期中根本不触及会话变量吗? (即在过滤器、操作、帮助器或模板中)。另外,会话对象是否有一些内容可以提示您它们的创建位置?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)