0
目前我在列出10.22在railstutorial.org書籍中。當我按照上市10.22的例子並輸入到user.rb文件這2表示1個參數錯誤Railstutorial.org部分10.22
# Returns true if the given token matches the digest.
def authenticated?(attribute, token)
digest = send("#{attribute}_digest")
return false if digest.nil?
BCrypt::Password.new(digest).is_password?(token)
end
我的測試套件應該拋出一個2 1參數錯誤。它甚至沒有通過身份驗證?只需要在sessions_helper.rb文件1個論點:
# Returns the current logged-in user (if any).
def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.signed[:user_id])
user = User.find_by(id: user_id)
if user && user.authenticated?(cookies[:remember_token])
log_in user
@current_user = user
end
end
end
而且,當我在2個參數添加按照指令:
# Returns the current logged-in user (if any).
def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.signed[:user_id])
user = User.find_by(id: user_id)
if user && user.authenticated?(:remember, cookies[:remember_token])
log_in user
@current_user = user
end
end
end
它拋出一個2 1的錯誤,我的測試套件是紅色的,而指示說它應該是綠色的。這是書中的錯誤嗎? 此外,當我編輯user_test.rb文件,內容如下:
test "authenticated? should return false for a user with nil digest" do
assert_not @user.authenticated?(:remember, '')
end
束EXEC耙測試拋出3個錯誤。
很有可能你有兩種版本的'authenticated?'方法 - 一個採用單個參數,另一個採用兩個參數 - 在同一個文件中定義。當一個方法被定義兩次時,最後一個覆蓋第一個。我的猜測是''authenticated?(attribute,token)'在'user.rb'文件中'authenticated?(remember_token)'的上面被定義,這就是導致這種行爲的原因。 –
很高興爲您提供幫助:-)添加了同樣的答案,爲他人帶來的好處。 –