내 사용자 프로필 업데이트 양식에서 첫 번째 필드는 사용자에게 현재 암호를 입력하도록 요청합니다. 그녀가 양식을 제출하면 다른 필드의 변경 사항을 수락하기 전에 암호를 확인합니다. 여기에 내가 현재 사용자의 컨트롤러에이 일을 해요 방법은 다음과 같습니다프로필을 업데이트하려면 사용자가 암호를 입력하도록 요구하십시오.
def update
@user = User.find(params[:id])
if @user.has_password?(params[:user][:password])
if @user.update_attributes(params[:user])
flash[:success] = "Profile updated."
redirect_to @user
else
render 'edit'
end
else
flash[:failure] = "Password does not match!"
render 'edit'
end
end
내가 이것을 할 수있는 더 좋은 방법이 기분. 예를 들어 사용자 모델에서 유효성 검사와 일치하는 암호를 만들 수 있습니다. 그런 다음 formtastic은 자동으로 오류 메시지를 처리합니다 (위의 추악한 플래시 접근 방식과 반대 됨). 나는
validate :password_match?, :on => :update
그리고
def password_match?
has_password(params[:user][:password])
end
와 함께이 일을하지만 의심 PARAMS으로 모델에서 액세스 할 수 없습니다 시도.
이렇게하려면 길을 20 분 동안 찾았으므로 Devise 또는 Authlogic과 관련이없는 항목을 찾을 수 없습니다. 저는 처음부터 인증을하고 있습니다 (모든 것이 잘 작동합니다 : 로그인, 세션 등).
빛을 더 잘 보여주세요.
(https : //로 GitHub의. co.kr/plataformatec/devise/blob/master/app/views/devise/registrations/edit.html.erb # L15) – Zabba
다음에는 devise를 사용하겠습니다. 나는 레일즈를 최근에 배웠고 처음부터 인증을 만드는 튜토리얼을 따랐다. 그 이후로 내 프로젝트에서이 코드를 사용하고 있습니다. –