【问题标题】:Rails - how to validate one field against another for datesRails - 如何验证一个字段与另一个字段的日期
【发布时间】:2013-06-06 11:13:18
【问题描述】:

我认为这是一个简单的问题。在我的应用程序中,我有一个模型,用户在提交新记录时选择“开始”日期和“停止”日期。日期只是年份,不包括月份和日期。

我只想写一个验证来确保停止日期大于开始日期,所以你不能提交从 2012 年开始到 2008 年结束的东西。我该怎么做?

我的表单字段如下:

<%= select_year Date.today, start_year: Time.now.year, end_year: Time.now.year - 95, field_name: :start %>

<%= select_year Date.today, start_year: Time.now.year, end_year: Time.now.year - 95, field_name: :stop %>

【问题讨论】:

  • 除了下面的答案之外,如果有人输入的结尾小于开头,请考虑交换值。

标签: ruby-on-rails


【解决方案1】:

如果您想进行服务器端验证,您可以在模型中添加验证

validate :stop_date


def stop_date
  errors.add(:stop, "stop date cannot be older than start date") if stop < end
end

您可以在视图上填充错误。

【讨论】:

  • 我认为这里的含义是您最好使用一些javascript在输入上进行测试。 :)
  • 谢谢,我同意。我正在使用客户端验证 gem,所以我将尝试弄清楚如何将其用于 javascript 验证
猜你喜欢
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
相关资源
最近更新 更多