2009-04-02 6 views
2

J'utilise le standard active_record_store dans mon application. En environment.rb je:Basic ActiveRecordStore Le champ updated_at n'est pas mis à jour à chaque requête

config.action_controller.session_store = :active_record_store 

Et ma table sessions a été créé avec 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 

Cependant la colonne updated_at est pas mis à jour à chaque demande. Il est mis à jour lors de la création de la session (à la même valeur que created_at, comme prévu) mais pas pour les demandes suivantes.

Bizarrement, si je déclare l'appel explicite suivant environment.rb alors le champ est mis à jour à chaque demande:

class CGI::Session::ActiveRecordStore::Session 
def before_save 
    self.updated_at = Time.now 
end 
end 

Quelqu'un peut-il expliquer pourquoi cela ne fonctionne pas par défaut? Je cours Rails 2.1.0 - et non, je ne peux pas mettre à niveau Rails pour le moment! :)

Répondre

1

Mettez-vous à jour la session? Si vous ne mettez pas à jour les valeurs, je crois que la session ne sera pas enregistrée sur le disque.

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

Bonjour François. Oui, je mets à jour la session [: user] à chaque requête, mais avec la même valeur – Olly