2012-07-08 3 views
0

has_secure_password 및 authenticate 메소드를 사용하여 로그인/등록 및 세션을 설정 한 후 확인 이메일을 보내려고합니다. 사용자 모델이 있고 확인 된 부울을 추가했습니다. 사용자가 생성되면 확인 된 부울을 false로 설정하고 링크가 포함 된 전자 메일을 보냅니다. 링크를 클릭하면 사용자가//에 GET 요청을 생성 ID가/확인을하고 다음이다 users_controller에서 "확인"행동의 코드를 실행 :has_secure_password는 부울을 참으로 설정하지 못하도록합니다.


def confirm 
    @user = User.find(params[:id]) 
    @user.update_attributes(confirmed: true) 
    if @user.save 
     sign_in(@user) 
     flash[:success] = "Your account has been successfully confirmed" 
    else 
     flash[:error] = "There has been a problem confirming your account " 
    end 
    redirect_to root_path 
    end 

아주 간단한 (나중에 토큰 검증을 할 것입니다) . 내 문제는 내 사용자가 저장되지 않는다는 것입니다.

@user.errors.full_messages
반환 :

가 어떻게 암호마다 편집하지 않고 사용자 개체를 변경할 수 있습니다

["Password is too short", "Password confirmation can't be blank"] 
? 도움을 주시면 대단히 감사하겠습니다.

감사합니다.

답변

1

update_attributes 대신 update_attribute를 사용해보세요.

+1

... 두 번 저장하지 마십시오. 'update_attribute'는 이미 저장하고 있습니다.'@ user.save'를 호출 할 필요가 없습니다. 후자를 제거하고 대신'update_attribute'의 결과를 확인하십시오. – jdoe

+0

카일 정말 고마워. 이것은 효과가 있었다. – Myna

관련 문제