Базовое поле ActiveRecordStore updated_at не обновляется при каждом запросе - PullRequest
2 голосов
/ 02 апреля 2009

Я использую стандартное 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 Ответ

1 голос
/ 03 апреля 2009

Вы обновляете сеанс? Если вы не обновляете значения, я считаю, что сеанс не будет сохранен на диск.

class WhateverController < ActionController
  def index
    session[:whatever] = true
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...