我想检查新人注册时使用的电子邮件地址是否与现有记录重复。
这是代码:
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 子句的构造。