我有一个联系电话,并希望验证它是11位数。我希望它接受01234567891
。
我正在使用验证:
validates :contactNo,
:length => {
:is => 11,
:format => { with: /[0-9]+/ },
:greater_than_or_equal_to => 0,
:message => "Contact number is not valid"
}
它不接受0
作为数字。
我如何解决这个问题?
答案 0 :(得分:3)
保存为整数将导致ActiveRecord
对其进行类型转换,这将使前导0掉落,这将使实际长度为10而不是11.如果您想要前导0,则需要将其保存为字符串所以ActiveRecord
没有对它进行类型转换。
此外,您似乎以不正确的方式混合单独的验证。
可能你想要这个:
validates :contactNo,
:length => {
:is => 11,
:message => "Contact number must be exactly 11 digits"
},
:format => {
:with => /[0-9]+/,
:message => "Contact number can only contain the digits 0-9"
}
答案 1 :(得分:2)
您可以使用精确数字代替+
validates :contactNo, format: /[0-9]{11}/, message: 'must be eleven digits (0-9)'
但是正如@Nathan所指出的那样,你不能使用整数字段,因为01是整数形式,1是整数。