Ho un app rotaie che ha il seguente contenuto nella cartella config/inizializzatori/file di session_store.rb:Come assegnare condizionalmente ActionController :: Base.session in rotaie 2.3.3
ActionController::Base.session = {
:key => '_app_session',
:secret => 'a really long string here',
:expire_after => 2.minutes
}
ActionController::Base.session_store = :active_record_store
Così durante le normali operazioni stiamo vedendo oggetti ActiveRecord creati nel database per ogni sessione. Il problema è che non sempre vogliamo creare una sessione per le richieste: vorremmo essere in grado di disattivare la creazione di sessioni per richieste automatizzate. Stiamo visualizzando migliaia di record di sessione nel database, uno per ogni richiesta automatica. Prima di rotaie 2.3.3, il seguente è stato possibile:
class ApplicationController < ActionController::Base
session :off
...
end
ma ora in rotaie 2.3.3 "sessione: off" è stato deprecato, perché le sessioni sono ora pigro-caricato - se non vengono utilizzati, non sono creati Il problema sembra essere che l'oggetto di sessione è sempre assegnato nel file sessionstore.rb, e quindi sempre creato. Se rimuovo il blocco di assegnazione sessione dal file di configurazione, non viene visualizzato alcun record di sessione dopo una richiesta automatica. La mia domanda è, come posso spostare le assegnazioni di configurazione all'hash della sessione da session_store.rb e nella classe ApplicationController (o altrove) in cui la sessione può essere assegnata in modo condizionale solo se una richiesta non è automatizzata? Sono preoccupato che i dati di configurazione della sessione possano essere necessari prima che venga eseguito il gestore del controller. Dove dovrei inserire l'assegnazione dei valori delle chiavi di sessione?
Grazie in anticipo per qualsiasi aiuto.
per interesse, c'è una ragione non si sta usando il cookie predefinito basato implementazione sessione? – jonnii