如何从session_id加载Rails会话?

时间:2013-07-24 03:18:05

标签: ruby-on-rails session cookies ruby-on-rails-4

我在我的应用程序中使用MyApp::Application.config.session_store :active_record_store将Sessions存储在数据库中。一切正常。但是,我希望能够在传递session_id时加载特定的会话。这是服务器在客户端存储为cookie的值。

我的Rails应用程序有一个不能使用cookie的客户端,所以它必须在参数中传递session_id。我想使用before_action或某种过滤器来获取该参数并使用它来加载我的控制器中的session,而不是由于缺少适当的Cookie而加载空会话的应用

有什么方法可以做到这一点吗?我不想完全关闭cookie方法,因为我的网络客户端使用cookie,它只是我的移动客户端不能。

编辑: 如果我声明class Session < ActiveRecord::Base然后执行Session.find_by_session_id('whatever')我会得到一个Session ActiveRecord对象,但我不知道如何在正常的Rails意义上将其变为可用的session

1 个答案:

答案 0 :(得分:0)

只需在before_action过滤器中执行request.session_options [:id] =“无论你想要什么”,Rails将在你访问它时使用该session_id加载会话(由于延迟加载)。