2013-08-01 28 views
0

我想驗證我所有的日期都是未來的。我的模型中有4個日期,所以我使用每個循環來評估它們。我收到一條錯誤消息:'undefined method`to_sym'for Tue,2013年7月9日00:00:00 UTC +00:00:Time'。這是因爲時間對象正被轉換爲符號。但是我想要的是那個日期實際上指的符號。有沒有辦法做到這一點? 我的驗證:如何在迭代器中獲取符號名稱

def dates_must_be_in_future 
    [drop_off_start, drop_off_end, pickup_start, pickup_end].each do |date| 
     errors.add(date, "must be in the future") if Date.today > date 
     puts '---------------------' 
     puts self.errors.on(:date) 
    end 
    end 

回答

2

當您添加錯誤(errors.add),你需要在實際的屬性名稱傳似

errors.add(:drop_off_start, "must be in the future") 

你傳入date這僅僅是一個Time對象。

實際上,你可以做這樣的事情:

def dates_must_be_in_future 
    [:drop_off_start, :drop_off_end, :pickup_start, :pickup_end].each do |date| 
    errors.add(date, "must be in the future") if Date.today > self.send(date) 
    end 
end