2013-07-24 18 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加载会话(感谢懒加载)。