我们的应用程序遇到问题,允许用户使用相同的帐户信息(特别是电子邮件)多次注册。
我们的用户模型验证了电子邮件参数的唯一性,我们还使用了一些javascript来确保点击“注册”按钮后,除非注册失败(理论上只确保一次点击),否则它将无法使用)。
出现问题源于用户在页面上的javascript完成之前双击注册按钮。
Rails方面是否有办法阻止这种情况?也许是创建请求堆栈然后遍历它们的东西?我问,因为我们不能成为唯一有此问题的网站。
由于
答案 0 :(得分:2)
愚蠢的问题:为什么不将数据库本身的字段设置为唯一?
如果无法做到这一点,请按照史蒂夫伯恩的建议行事,并使用以下内容:
var clicked = false;
$('#submit_button').click( function() {
$(this).preventDefault();
if(!clicked) {
clicked = true;
$('#submit_button').attr('disabled','disabled');
$('#form').submit();
}
现在,我没有测试过,因此设置clicked = true
可能有点矫枉过正;)
答案 1 :(得分:0)
插入后立即将文本字段设置为Nothing。
答案 2 :(得分:0)
并不完全相信正在发生的事情,但另一种选择是只在jQuery的ready函数中启用提交按钮,并从隐藏或禁用它开始。你是否在准备好的功能之外运行了大量的JS?
答案 3 :(得分:0)
如果问题是用户在javascript加载完之前提交表单,为什么不让那个不可能? (即提交按钮操作不提交表单,但您的javascript在点击事件上提交?)
有几种方法可以防止JS中的欺骗;听起来你已经有了这个。