新しい人が登録するときに使用するメールアドレスが既存のレコードと重複していないかどうかを確認したい。
コードは次のとおりです。
post '/signup' do
email_address = params['email_address']
username = params['username']
password = params['password']
@duplicate = DB[:users].select(:email_address).where('email_address = ?', email_address)
if email_address = @duplicate
redirect "/?msg=Email address already in use. Try again"
return
end
end
これにより、電子メール アドレスが重複していない場合でもすべての試行がブロックされ、エラー メッセージが表示されてリダイレクトされます。
(@ マークなしで) で置き換える@duplicate
と、同じ結果になり、すべての試行がブロックされます。代わりduplicate
に使用すると、重複する電子メール アドレスは無視され、試行はブロックされません。 ==
=
私はクエリを知っています:
DB[:users].select(:email_address).where('email_address = ?', email_address)
私はそれをテストしたので正しいです。したがって、問題は if 節の構造にあると思います。