正则表达式的验证失败了,但它不应该

时间:2014-08-26 19:56:57

标签: ruby-on-rails ruby regex ruby-on-rails-4

validates_format_of         :start_time,    :with => /\A\d{2}:{1}\d{2}\z/ 

这应该以{{1​​}}的格式验证开始时间,但无论我抛出什么,它都会被验证为false,因此不允许我更新属性。

我在这里缺少什么?

不知何故,上面的行也禁止我更新其他属性。删除该行可以解决所有问题,并让我再次更新任何属性。

更新属性的代码是:

00:00

进一步检查后,参数包括:

if current_restaurant.update(params.require(:restaurant).permit(:start_time))
    //success handling
else 
    //failure handling
end

1 个答案:

答案 0 :(得分:3)

我认为我的问题中的关键问题是:

  

不知何故,上面的行也禁止我更新其他属性。删除该行可以解决所有问题,并让我再次更新任何属性。

因此,我尝试将空白与正则表达式结合使用,这恰好解决了我的问题!

解决方案:

validates_format_of    :start_time,    :with           => /\A\d{2}:{1}\d{2}\z/ ,
                                       :allow_blank    => true

编辑: time_validation的正则表达式更好:

/\A([01][0-9]|2[0-3]):[0-5][0-9]\z/
相关问题