2012-11-27 24 views
0

我有一個看起來像這樣 的意見/型材/ _formRails的:如何添加驗證了錯誤的日期,例如11月31日和31月使用IHAVE:日期,我列類型

<div class="field2"> 
<%= f.label :purchase_date, "Date this horse was purchased" %><br /> 
<%= f.date_select :purchase_date %> 
</div> 

<div class="field2"> 
<%= f.label :owner_name, "Owner Name" %><br /> 
<%= f.text_field :owner_name %> 
</div> 

什麼驗證一個表單添加我的模型/ profile.rb

驗證:purchase_date ????????

+0

可以日期選擇器很容易使用jquery或HTML5。 –

+1

@MuhamamdAwais:但這些對服務器端驗證沒有幫助,如果你沒有進行服務器端驗證,那麼你做的全部錯了。 –

回答

1

你想要exclusion validation。它看起來像這樣:

# Made it a constant, but could also be in a method. 
EXCLUSION_DATE = [Date.new(2012,1,1), Date.new(2012,2,1)] 
validates :purchase_date, :exclusion => { :in => EXCLUSION_DATES } 

您還可以隨時添加自己的自定義驗證:

validate :check_purchase_date # Name it whatever you want 

private 
    def check_purchase_date 
    exclusion_dates = [Date.new(2012,1,1), Date.new(2012,2,1)] 
    if exclusion_dates.include?(self.purchase_date) 
     self.errors.add(:purchase_date, "cannot be on a reserved date.") 
    end 
    end 
+0

對不起,但我的意思是使用兩個代碼或其中任何一個。 – Mazterkizh

+0

其中之一。 – MrDanA

+0

您的代碼絕對有效。有沒有辦法我可以做到多個日期列,而不必爲每列重複相同的代碼。基本上我說我想要驗證爲多個列執行此操作。例如:purchase_date和:vaccination_date – Mazterkizh

0

爲什麼不讓用戶從jquery datepicker中選擇例如,以便您可以直接消除tje問題?

+1

如果有人直接將POST發送到更新URL,或者JS被阻止並進入任何日期,該怎麼辦? – MrDanA