模型验证,验证字符串是一个整数

时间:2013-05-30 20:38:18

标签: ruby-on-rails ruby ruby-on-rails-3 validation

您好我有一个名为users的模型,他们有一个手机属性,必须输入一个以“+”开头的12位数字符串。我想验证他们从表单输入的属性实际上是否采用了正确的格式。示例“+11234567890”应保存到模型中,但“1232h”不会保存。

这就是我在我的模型中所拥有的,但它不起作用:

  validates :cell, :format => { :with => /^[-+]?[0-9]+$/,
    :message => "Only numbers allowed" }, :length => { :is => 10 }

1 个答案:

答案 0 :(得分:3)

试试这个:

validates :cell, :format => { :with => /\A(\+1)?[0-9]{10}\z/, :message => "Not a valid 10-digit telephone number" }

我认为问题在于您尝试在单个validates行上进行两种不同类型的验证。上面将长度约束与数字约束相结合,并允许变量+/-而不会弄乱长度约束。