2012-08-02 50 views
0

我在视图中的三个选择字段:Rails的验证日期“年龄超过17”

<%= 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,:dob_month从2012至12年01-12和dob_year(该值最近100年)

我想验证某人的出生日期至少在17年前,即该人至少17岁。我如何在我的导轨模型中执行此操作?

回答

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 

提示..

以外的具体的答案,我会建议你的出生日期场只是一个字段和这三个选择代表您的表中的一列。

+0

每个部分都去哪里? – Harry 2012-08-02 12:55:57

+0

您可以将第二部分粘在模型中。你必须确保你用'dob_year'' dob_month'和'dob_day'正确地排列你的params。 – Trip 2012-08-02 13:10:56

+0

错误:动态常量赋值 http://stackoverflow.com/questions/6712298/dynamic-constant-assignment – Harry 2012-08-02 13:20:38