Rails验证日期“早于17”

时间:2012-08-02 10:01:08

标签: ruby-on-rails validation

我的视图中有三个选择字段:

<%= select("policyholderdetail", "dob_day", days_options, {:prompt => "#{t :day}"}) %>
<%= select("policyholderdetail", "dob_month", months_options, {:prompt => "#{t :month}"}) %>
<%= select("policyholderdetail", "dob_year", dob_years_options, {:prompt => "#{t :year}"}) %>

:dob_day的值范围为01-31,{1}来自01-12,:dob_month来自1912-2012(过去100年)

我想验证某人的出生日期至少是17年前,即该人的年龄至少为17岁。我怎么能在我的rails模型中做到这一点?

1 个答案:

答案 0 :(得分:2)

首先,您要确保只保存一个DateTime来表示所有三个字段。

DateOfBirth = Time.parse ("#{ dob_year + dob_month + dob_day } " )

然后你就是在那个日期工作:

validates :is_seventeen?

def is_seventeen?
   DateOfBirth = Time.parse ("#{ dob_year + dob_month + dob_day } " )
   DateOfBirth > Time.now - 17.years ? true : false
end

提示..

在具体答案之外,我建议您的DateOfBirth字段只是一个字段,而这三个选择代表表格中的一列。