나는 Michael Hartl의 railstutorial을 따라 가고있다. 원하는 경우 충고 한대로 장을 건너 뛰었습니다. 사용자 모델에 rails test
의 AccountsActivationsController
및 PasswordResetsController
에 대한 동일한 오류가 발생했습니다. 잘못된 인수 수 (2는 1)입니다.레일 오류, 1의 인수 2가 잘못 되었습니까?
Ive는 내가 잘못한 곳을 보려고 노력하면서 약간의 시간을 보냈지 만 외부인의 관점을 묻습니다. 사용자 모델 def authenticated?
과 동일한 작업에서 해당 컨트롤러에있는 valid_user
및 edit
작업에서 오류가 발생합니다.
무엇이 문제 일 수 있습니까?
AccountsActivationsController
class AccountsActivationsController
def edit
user = User.find_by(email: params[:email])
if user && !user.activated? && user.authenticated?(:activation, params[:id])
user.activate
user.update_attribute(:activated, true)
user.update_attribute(:activated_at, Time.zone.now)
log_in user
flash[:success] = "Account activated!"
redirect_to user
else
flash[:danger] = "Invalid activation link"
redirect_to root_url
end
end
end
PasswordResetsController
class PasswordResetsConrtoller
.
.
.
def valid_user
unless (@user && @user.activated? &&
@user.authenticated?(:reset, params[:id]))
redirect_to root_url
end
end
.
.
사용자 모델
class User
.
.
.
def authenticated?(activation_token)
return false if activation_digest.nil?
BCrypt::Password.new(activation_digest).is_password?(activation_token)
end
.
.
분명히 하나의 매개 변수를 사용하는 경우 왜 두 개의 매개 변수를 전달합니까? 거기에 코드가 있어도 * activate_token은 유효한 인수입니다. – tadman
잘 모르겠습니다. 튜토리얼에서 말한 내용입니다. 거기에 무엇을 가져야합니까? –
토큰 만 전달해야합니다. 그렇다면'params [: id]'라면 그렇게하십시오. 자습서가 깨졌습니다. – tadman