2013-07-24 16 views
0

我在我的應用程序中使用MyApp::Application.config.session_store :active_record_store將Sessions存儲在數據庫中。它一切正常。但是,我希望能夠在通過session_id時加載特定會話。這是服務器在客戶端存儲爲cookie的值。如何從session_id加載Rails會話?

我的Rails應用程序有一個客戶端,不能使用cookie,所以它必須在參數中傳遞給我session_id。我想使用before_action或某種過濾器來獲取該參數,並使用它在我的控制器中加載session,而不是由於缺少適當的Cookie而加載空會話的應用程序。

有什麼辦法可以做到這一點?我不想完全關閉cookie方法,因爲我的web客戶端使用cookie,這只是我的移動客戶端不能。

編輯: 如果我聲明class Session < ActiveRecord::Base然後做Session.find_by_session_id('whatever')我得到一個會話的ActiveRecord對象,但我不知道如何使之成爲一個有用session這在正常的Rails感。

+0

解決方法:只要在'before_action'過濾器中執行request.session_options [:id] =「任何你想要的」,並且Rails在你訪問它時會使用session_id加載Session(感謝延遲加載)。 –

回答

0

只要在before_action過濾器中執行request.session_options [:id] =「任何你想要的」,Rails將在你訪問它時使用該session_id加載會話(感謝懶加載)。