如下面这个代码
before_save :encrypt_password
def has_password?(submitted_password)
encrypted_password == encrypt(submitted_password)
end
private
def encrypt_password
self.salt = make_salt if new_record?
self.encrypted_password = encrypt(password)
end
def encrypt(string)
secure_hash("#{salt}--#{string}")
end
def make_salt
secure_hash("#{Time.now.utc}--#{password}")
end
def secure_hash(string)
Digest::SHA2.hexdigest(string)
end
end
中的
def has_password?(submitted_password)
encrypted_password == encrypt(submitted_password)
end
的 encrypted_password 是使用的 encrypted_password 方法还是 model 的变量的呢?
rails tutorails 中的这段代码
$ rails console --sandbox
>> User.create(:name => "Michael Hartl", :email => "[email protected]",
:password => "foobar", :password_confirmation => "foobar")
>> user = User.find_by_email("[email protected]")
>> user.has_password?("foobar")
返回是 true 而我测试的是 false 检查出来的原因,在调用 has_password?中的 self.encrypted_password = encrypt(password) 的 password 是空值
是不是 rails tutorails 书上错误,还是我理解代码写错了,忘指点迷津下