0

模型中可能有例如用户模型

class User < ActiveRecord::Base
  attr_accessible :number 
  validates_length_of :number, :is => 4
 ...
end

验证长度为 4 (1234),但有一个例外,即数字可以是值 0 ?:-) 我在这里寻找文档http://api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html但我不知道该怎么做?

编辑:现在我意识到也许可以使用正则表达式,但这不是我的强项:-p

4

2 回答 2

1

您可能希望允许长度为零以准备输入为零或空白的情况。

这种情况有内置的简单解决方案

validates :number, length { :is => 4 }, allow_blank: true
# allow_blank includes cases of both nil and blank

完毕。

文档: http: //guides.rubyonrails.org/active_record_validations.html#allow-blank

于 2013-08-30T05:11:54.210 回答
0

如果数字以字符串形式出现,您可以使用正则表达式验证它的格式以实现接近的效果:

class User < ActiveRecord::Base
  attr_accessible :number 
  validates :number, :format => { :with => /^(\d{4}|0{1})$/ }
 ...
end

这表示验证数字的格式(假设它是一个字符串),以便从字符串的开头有 4 位数字的模式或单个 0 位数字后跟字符串的结尾。

于 2013-08-30T01:52:18.403 回答