【发布时间】:2013-05-13 20:02:57
【问题描述】:
我想检查新用户注册时使用的电子邮件地址是否与现有记录重复。
代码如下:
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 子句的构造。
【问题讨论】:
标签: ruby postgresql sequel