2012-08-02 49 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