2015-04-09 13 views
10

Sto utilizzando il session store per salvare i dati nelle sessioni. Il mio inizializzatori/session_store.rb assomiglia come:La sessione di rails non persiste dopo i reindirizzamenti

::Application.config.session_store :active_record_store 

Aggiunta di dati al codice di sessione:

book = Book.find(1) 
session[:abc] = book 

sto Accedendo a questo i dati della sessione in una pagina diversa. Accesso ai dati di sessione:

book = session[:abc] 

Il problema è che i miei dati di sessione non sono persistenti tra i reindirizzamenti. Quale potrebbe essere il problema?

Vedo che la mia sessione sta salvando i dati come previsto ma ha perso alcuni dati da esso quando si verifica il reindirizzamento e se ne perde ancora di più se si verifica nuovamente il reindirizzamento. È frustrante.

+0

Si dovrebbe aggiungere alcune informazioni su come si sta scrivendo in, e leggendo da, la sessione. Vale a dire, il codice che non sta dando i risultati che ti aspetti. –

+0

@MaxWilliams, ho pensato che fosse comprensibile. Ad ogni modo, ho modificato la mia domanda. E adesso? –

+0

per favore inserisci il codice del controller –

risposta

6

Si può provare questo passaggio libro id alla sessione invece di tutto il libro oggetto.

ad es.

in pagina A

book = Book.find(1) 
session[:abc] = book.id 

in pagina B

book = Book.find(session[:abc]) 
4

Non ti sei dimenticato di aggiungere la tabella delle sessioni?

rails g active_record:session_migration 
rake db:migrate 
+0

Ho una tabella delle sessioni nel database mySql. –

+0

Strano, questo dovrebbe essere sufficiente per farlo funzionare ... ci provo dopo. –

+0

E la pagina che si reindirizza è nello stesso sottodominio? –

4

È possibile scrivere un metodo nel modello di libro.

def self.current=(book)     
    Thread.current[:current_book] = book 
end 

def self.current 
    Thread.current[:current_book] 
end  

Aggiunta di dati al codice di sessione,

book = Book.find(1) 
Book.current = book 

E, per accedere libro dalla sessione, è possibile chiamare il metodo

Book.current 
+1

puoi spiegare perché hai usato thread per impostare e accedere ai valori? – kamal

Problemi correlati