我正在尝试使用正则表达式验证某种日期时间字段。正则表达式是正确的 - 我在 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 is invalid
我试着把它分解并开始:
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。
最佳答案
你正在传递一个字符串,所以改为:
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
您只能对字符串运行正则表达式验证。
关于ruby-on-rails - Rails 验证正则表达式不工作 : invalid though input correct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34827719/