ユーザーモデルに次のコードがあります。
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
これはうまく機能しますが、問題は、失敗することを期待していたことです。行: はfalsewhile User.exists?(column=>self[column])
を返すという印象を受けました。これは、レコードがまだデータベースに保存されていないため、remember_token が設定されないためです。
しかし、新しく作成されたユーザーにはremember_tokenが設定されており、これがどのように可能になるかについて少し混乱しています. 何か不足していますか?