导轨长度验证异常

时间:2013-08-30 01:24:46

标签: ruby-on-rails-3 validation

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

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,但我不知道该怎么做?

编辑:现在我意识到也许可以使用regexp,但那不是我强大的领域:-p

2 个答案:

答案 0 :(得分:1)

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

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

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

完成。

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

答案 1 :(得分:0)

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

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

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