我正在尝试使用正则表达式验证日期时间字段的种类。正则表达式是正确的 - 我在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。
答案 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
您只能针对字符串运行正则表达式验证。