每个请求都没有更新基本ActiveRecordStore updated_at字段

时间:2009-04-02 19:35:44

标签: ruby-on-rails activerecord session

我在我的应用中使用标准的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! :)

1 个答案:

答案 0 :(得分:1)

您是否正在更新会话?如果您没有更新值,那么我认为会话不会保存到磁盘。

class WhateverController < ActionController
  def index
    session[:whatever] = true
  end
end