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