Rails验证正则表达式无效:虽然输入正确但无效

时间:2016-01-16 13:49:44

标签: ruby-on-rails regex validation

我正在尝试使用正则表达式验证日期时间字段的种类。正则表达式是正确的 - 我在rubular上测试了它 - 但是Rails在字段上引发错误:无效。

在我的模特中,我有:

validates :ddate, presence: true, format: { with: /\A(\d\d\.){2}\d{4} \d\d:\d\d\z/ }

在我的表单中输入:25.12.2015 20:15并获得验证错误:ddate无效

我试图将其分解并开始:

validates :ddate, presence: true, format: { with: /\A\d\d/ }

按预期工作,然后我尝试了:

validates :ddate, presence: true, format: { with: /\A\d\d\./ }

不再适用。

任何提示,为什么这不起作用?

我使用的是Rails 4.2.4和Ruby 2.2.1p85。

1 个答案:

答案 0 :(得分:0)

您正在传递字符串,请改为:

attr_accessor :ddate_string

validates :ddate_string, presence: true, format: { with: /\d{1,2}\.\d{1,2}\.\d{4} \d{1,2}:\d{1,2}/ }

before_save :set_ddate

def set_ddate
  self.ddate = ddate_string
end

您只能针对字符串运行正则表达式验证。