在rails中验证日期格式

cak*_*rus 3 ruby regex validation ruby-on-rails

我的简单日期验证正则表达式无法正常工作......

validates_format_of :dob, :with => /\d{2}\/\d{2}\/\d{4}/, :message => "^Date must be in the following format: mm/dd/yyyy"
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?我正在尝试验证日期是否采用以下格式:mm/dd/yyyy - 当我输入应该是有效数据的内容时,我仍然会收到错误消息.

感谢你目前的帮助.这是我的表单中传递dob值的代码片段:

    <tr>        
      <td>
        <%= f.label :dob, "Date of Birth:  " %>
      </td>
      <td>
        <%= calendar_date_select_tag "user[dob]", "", :format => :american, :year_range => 50.years.ago..0.years.ago %>
      </td>
    </tr>
Run Code Online (Sandbox Code Playgroud)

我认为这可能与我使用这个js日历插件有关.一个相关的问题是,如果帖子验证失败,我的dob值不会在字段中维护 - 先前输入的日期值清除...

谢谢!

汤姆

Jul*_*lik 6

您可能正在使用字符串字段来存储日期.因此,任何期望DateTime或Time值的帮助程序都将无法正常工作.您将需要调查多参数赋值在Rails中找出正确的方式做你想做的事(multiparemeter任务是发送后面4场到Rails,并让他们转换成魔法DateTimeTime对象).

换句话说:如果您使用的是真正的DateTime字段(对于这种情况应该如此),validates_format_of将不会产生任何影响(或会产生不利影响)


Dom*_*Dom 5

为您的所有日期/时间验证找到了一个出色的 gem/插件。

validates_timeliness

http://github.com/adzap/validates_timeliness