我在我的模型中使用正则表达式获取一个必须长度为8的数字。我这样做:
validates_uniqueness_of:my_number,:with => / ^ [0-9] {8} $ /,:message => “错误消息”
但这不起作用,如果我设置输入“hahaha”,我会得到“错误信息”,如果我设置 123 ,那么我将获得成功输出,但那是错的......我试着得到一个接受总是精确8位的正则表达式......
答案 0 :(得分:4)
更新:在评论中为@tadman points out,在Rails 3中,您可以combine validators:
validates :my_number, :uniqueness => true, :format => { :with => /^[0-9]{8}$/ }
使用旧式验证:
validates_uniqueness_of
不接受with
选项,只有validates_format_of
。所以你可以试试:
validates_format_of :my_number, :with => /^[0-9]{8}$/, \
:message => "8 digits, please."
要验证唯一性,您可能需要添加另一个约束。
答案 1 :(得分:4)
大概:
validates_format_of :my_number, :with => /\A[0-9]{8}\Z/
validates_uniqueness_of :my_number