Я нахожусь в процессе обновления до Rails 3.1.0 с 3.0.10, и я использую Devise для аутентификации.
У меня есть ряд функциональных тестов, которые требуют от меня установить одинпеременная сеанса.Вещи в соответствии с:
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
Это не удалось, так как моя информация о сеансе забивала данные сеанса аутентификации devise, поэтому мое предыдущее решение заключалось в слиянии с сеансом по умолчанию:
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
Все это работало нормально с рельсами 3.0.10 (с надзором 1.0.4 и разработкой 1.4.2), но больше не с рельсами 3.1.0 (и надзирателем 1.0.5, разработкой 1.4.4).Теперь я получаю следующую ошибку:
NoMethodError: private method `stringify_keys' called for <ActionController::TestSession:0x000001060db590>
Я понял, это потому, что объект 'session' является экземпляром ActionController :: TestSession, а в rails 3.1.0 есть куча переменных экземпляраэто не может и не должно быть «строковым».
Как мне правильно получить доступ к пользовательской информации устройства (желательно динамически), чтобы я мог добавить 'current_lesson_id' и т. д .?
Спасибомного,