我正在创建一个用户注册表单,我正在将日期添加到必填字段。
我已经搜索了google,github和stackoverflow以获得一个好的出生日期(日期)正则表达式,并发现了这个:
的 user.rb 的
DateRegex = /^\d{4}-\d{2}-\d{2}/
validates_format_of :date_of_birth, :with => DateRegex
的 new.html.erb 的
<%=label_tag :date_of_birth %>
<%=f.text_field :date_of_birth %>
(我知道这会允许一些虚假的出生日期,但我不想在此时安装任何类似验证及时性的内容。)
然而,在测试出生日期时,它似乎并没有强制执行正则表达式中的4-2-2。它允许2-2-2有时,2-4-2,2-2-4,它允许连字符和斜线...请帮助吗?
另外,如果有必要,我如何使用3个文本字段并让它进入一个mysql date_of_birth列?
答案 0 :(得分:5)
您可以随时使用Date.parse
让您的生活更轻松。如果可以解析它,它可能是一个有效的日期:
validates_each :date_of_birth do |record, attr, value|
begin
Date.parse(value)
rescue
record.errors.add(attr, "Invalid date")
end
end
这有利于拒绝像99-99-99和2月30日这样的事情。
答案 1 :(得分:0)
我希望这会有所帮助。
validates :date_of_birth, format: { with: /^\d{4}-\d{2}-\d{2}$/, multiline: true }