我正沿着Michael Hartl的railstutorial。我根據建議跳過一章,如果需要的話,我在rails test
的用戶模型中得到了AccountsActivationsController
和PasswordResetsController
錯誤的相同錯誤,錯誤的論證數量(2代表1)。導軌錯誤,錯誤的參數數目2 for 1?
我花了一點時間在這個試圖看看我錯了什麼地方,但認爲我會問一個局外人的觀點。我收到錯誤,在用戶模型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
.
.
爲什麼在明確需要時傳遞兩個參數?你甚至可以在那裏只有*''activation_token'是一個有效的參數。 – tadman
不確定,那就是它在教程中所說的。那裏應該有什麼,你會重拾? –
你應該只傳遞令牌,所以如果是'params [:id]'那麼就這樣吧。該教程已破解。 – tadman