如何从PORO访问rails应用程序的会话?

时间:2017-08-22 15:24:17

标签: ruby-on-rails ruby session

我正在开发一个向导 - 一个PORO模块 - 用于获取用户的信息。目标是将用户转发到所述向导,以便他在尝试使用不完整的个人资料进行预订(或类似操作)时完成其用户个人资料。

在向导的最后一步之后,我想将用户重定向回他最初想要的操作。为此,我正在保存一个名为“:user_return_to_from_wizard”的会话变量。

我似乎无法从PORO模块访问会话变量。我该怎么办?

我当然试过了

session[:user_return_to_from_wizard]

但这不起作用。我想像是

App::Application.session....

1 个答案:

答案 0 :(得分:2)

你可能不能也应该 - 使用PORO的好处之一就是能够在特定的上下文之外使用它们(在你的情况下是HTTP和会话)。我要做的是从会话中收集您需要的信息并使用它来初始化您的向导:

class SomeController < ApplicationController
  def index
    return_url = session[:user_return_to_from_wizard]
    wizard = Wizard.new(return_url: return_url)
    ...
  end
end

这样你仍然可以独立测试/使用向导,而不必依赖于内部会话。