2013-08-01 3 views
0

Я пытаюсь проверить, что все мои даты в будущем. У меня есть 4 даты в моей модели, поэтому я использую каждый цикл для их оценки. Я получаю сообщение об ошибке: 'undefined method `to_sym' for Tue, 09 Jul 2013 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 
Смежные вопросы