在我的控制器我有这样的:如何在ruby-on-rails上写一个3位数的验证?
validates_presence_of :order_of_importance, :on => :create, :with => /^\d{3}$/
但是,这仍然会验证(我认为),如果他们键入:
4231
但我想,以确保他们只类型以3位数字符号表示。
任何想法?
在我的控制器我有这样的:如何在ruby-on-rails上写一个3位数的验证?
validates_presence_of :order_of_importance, :on => :create, :with => /^\d{3}$/
但是,这仍然会验证(我认为),如果他们键入:
4231
但我想,以确保他们只类型以3位数字符号表示。
任何想法?
/^\d{3}$/
应该这样做。它确保数字在字符串的末尾开始和结束以匹配。
另外,最后不需要i
,因为数字不是整体。
您可以尝试
validates_length_of :order_of_importance, :maximum => 3
一个可能被 “更Railsy” 的方法是:
validates_length_of :order_of_importance, :on => :create, :is => 3
validates_numericality_of :order_of_importance, :on => :create
嗯..其实似乎没有验证。 – Trip
除了数字还有什么?即使是空白也会搞砸了。如果只有三位数字,正则表达式将匹配。如果您需要“字符串中的三位数”,请尝试:'/(?:^ | \ D)\ d {3}(?:\ D | $)/' –
@Kolik写的是正确的,但您应该使用validates_format_of而不是validates_presence_of来使用正则表达式 – lucapette