2010-11-22 3 views
0

Rails 2.3.8 프로젝트에서 Devise 1.0.8을 사용하고 있습니다.current_user는 Devise를 사용하는 컨트롤러에서 User 대신 TrueClass를 반환합니다.

context "when current_user is admin" do 
    should "render" do 
    sign_in Factory(:admin) 
    get :index 
    assert_response :success 
    end 
end 

을 그리고 컨트롤러 자체에서 다음 before_filter있다 : 내 컨트롤러 테스트에서 나는이

true 
false 

NoMethodError: undefined method `admin?' for true:TrueClass 

그래서 CURRENT_USER입니다 : 이것은 내 테스트의 출력이

def redirect_if_not_admin 
    puts current_user 
    redirect_to root_path unless current_user.try(:admin?) 
end 

입니다 테스트에서 sign_in을 사용할 때 true입니다. 그러나 내가하지 않으면 current_user는 nil이므로 확실히 영향을받습니다. 모든 도움을 미리 감사드립니다.

답변

2

확인을 사용했습니다! 메서드를 사용하여 after_create/build에있는 리소스를 공장에서 속성을 설정하는 대신 트릭을 수행합니다. current_user는 사이트에 확인되지 않은 사용자가있는 경우 (가입했지만 아직 확인 링크를 클릭하지 않은 사람)에 해당됩니다.

관련 문제