我在我的应用中使用标准的active_record_store。在environment.rb
我有:
config.action_controller.session_store = :active_record_store
我的sessions
表格是使用rake db:sessions:create
创建的:
create_table :sessions do |t|
t.string :session_id, :null => false
t.text :data
t.timestamps
end
add_index :sessions, :session_id
add_index :sessions, :updated_at
但是,每个请求都没有更新updated_at
列。它在会话创建时更新(与created_at
相同的值,如预期的那样),但不会对任何后续请求进行更新。
奇怪的是,如果我在environment.rb
中声明以下显式调用,则每个请求都会更新字段 :
class CGI::Session::ActiveRecordStore::Session
def before_save
self.updated_at = Time.now
end
end
任何人都可以解释为什么默认情况下这不起作用?
我正在运行Rails 2.1.0 - 不,我目前无法升级Rails! :)
答案 0 :(得分:1)
您是否正在更新会话?如果您没有更新值,那么我认为会话不会保存到磁盘。
class WhateverController < ActionController
def index
session[:whatever] = true
end
end