Ho trovato la risposta, sembra che Rails stia cercando di essere efficiente creando una sessione solo se c'è qualcosa da archiviare. Quindi l'accesso a session.id senza memorizzare qualcosa non restituisce risultati coerenti.
È necessario forzare la creazione della sessione memorizzando qualcosa al suo interno.
TLDR:aggiungilo da qualche parte prima di accedere all'ID della sessione.
session[:foo] = "bar"
Fonte :http://www.gani.com.au/2013/08/force-session-creation-in-rails/