我正在尝试将客户端模型中的contact\u phone列设置为整数数据类型。我仍然希望能够允许用户以他们喜欢的任何格式(即999-999-9999或999.999.9999)输入电话号码,并在将其验证为有效电话号码之前去掉任何非数字字符。
不幸的是,Rails似乎不想让我在验证之前对数据运行gsub,因为它是FixNum数据类型。这是否意味着我必须将其设置为数据库中的字符串,以允许用户在验证之前输入非数字字符?
我的客户模型:
before_validation :strip_contact_phone
protected
def strip_contact_phone
self.contact_phone = self.contact_phone.gsub(/[^0-9]/, '')
end
以及尝试保存新客户端时产生的错误:
undefined method `gsub' for 646:Fixnum
使用整数列类型是有问题的,因为Rails对数据库支持的属性执行赋值(和检索)类型转换。这意味着,当您尝试将字符串分配给整数字段时,您将键入字符串并丢失数据。例如:
"123-123-1234".to_i # => 123
这就是为什么您对646: Fixnum有未定义的方法“gsub”。Rails已经类型化了用户输入的电话号码字符串,将值截断为646,是的,
gsub
不是Fixnum的有效方法。所以一定要将电话号码列类型更改为String。然后您可以自由执行您的gsub,并且电话号码不会事先被截断。
def strip_contact_phone
self.contact_phone.gsub!(/[^0-9]/, '')
end
我在验证电话号码时遇到了问题。电话号码是一个10位数的字符串,应该填充在三个输入字段中第一个输入字段--仅有3位数(要求,只能接受数字和最大长度3)第二个输入字段--仅有3位数(要求,只能接受数字和最大长度3)第三个输入字段--仅有4位数(要求,只能接受数字和最大长度4)
在我当前的项目中,我使用电子邮件ID注册用户,然后在个人资料部分,当用户更新电话号码时,我验证该电话号码 现在真正的痛苦是,我的用户可以使用电话号码或电子邮件ID登录,但对于电子邮件ID,用户必须输入密码 我希望用户使用电子邮件或带有密码的电话登录。就像Flipkart那样。 我有什么办法可以做到吗?
我目前使用phonenumbers包作为我的Django的UserCreationForm的电话号码字段的验证方法。在我当前的代码中,我使用get方法从其字段中检索电话号码,然后进行验证。如果输入的数字不存在,将弹出一个表单错误,并声明该数字不是一个国家的格式(在本例中,我使用的是新加坡)。请告诉我应该对我当前的代码做什么修改。 我希望输出验证phone字段中输入的电话号码,没有国家代码,只有8位
我是HTML,有谁能帮我验证一个电话号码只有'+'和数字值和电话号码不超过13个数字,并验证电子邮件与'@'和‘。我不想使用javascript
我想弄清楚这个验证手机号码到我的Android系统是如何工作的。 我已经添加了代码和whant来验证46123456789,但最后一个号码(9)没有添加到电话号码中。 我用的是: 我是不是错过了什么