我的用户模型中有以下代码:
before_save :create_remember_token
private
def create_remember_token
generate_token(:remember_token)
end
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
这很好用,但问题是我预计它会失败。我的印象是该行:while User.exists?(column=>self[column])
将返回false,因为该记录尚未保存到数据库中,因此不会设置 remember_token 。
但是新创建的用户确实有他们的 remember_token 集,我对这怎么可能有点困惑。我错过了什么吗?