我在我的应用程序中使用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(感谢延迟加载)。 –