我正在从3.0.10升级到Rails 3.1.0,我正在使用Devise进行身份验证。stringify_keys在功能测试中补充会话变量后出错
我有一些功能测试,需要我设置一个会话变量。沿线的东西:
test "new clears current_lesson_id from session" do
get :new, nil, {'current_lesson_id' => '234234'}
assert_response :success
assert_nil session[:current_lesson_id]
end
这是没有我的会话信息被重挫的色器件认证会话数据,所以我以前的解决方案是使用默认的会议合并:
test "new clears current_lesson_id from session" do
get :new, nil, authenticated_sesion_with({'current_lesson_id' => '234234'})
assert_response :success
assert_nil session[:current_lesson_id]
end
def authenticated_session_with(hash)
session.merge(hash)
end
所有这一切在rails 3.0.10(warden 1.0.4和devise 1.4.2)下运行良好,但不再使用rails 3.1.0(和warden 1.0.5,devise 1.4.4)。现在我发现了以下错误:
NoMethodError: private method `stringify_keys' called for <ActionController::TestSession:0x000001060db590>
我推测,这是因为“会话”对象的ActionController :: TestSession的实例,并在铁轨3.1.0有一堆实例变量,可以'不应该'串化'。
我应该如何正确访问设计用户信息(最好是动态的),以便我可以添加'current_lesson_id'等。
谢谢了,
'会议[ 'current_lesson_id'] = 234234''得到:new'咄,对不起。 – doublea