2015-08-16 3 views
2

Я создаю приложение для календаря и имею некоторые проблемы с проверкой даты. Я хочу разрешить пользователям делать только будущие события. После добавления пользовательского валидатораПроверка даты модели в Rails

class Event < ActiveRecord::Base 
    belongs_to :user 

    validates :name, presence: true 
    validates :date, presence: true 
    validate :future_event 


    private 

    def future_event 
    errors.add(:date, "Can't be in the past!") if Date.parse(date) < Time.now 
    end 
end 

Это Params отлаживать

event: !ruby/hash:ActionController::Parameters 
    name: New 
    date: 08/17/2015 
commit: Add 
controller: events 
action: create 

И я получаю ошибку: нет неявного преобразования нуля в String. Какая у меня ошибка?

+0

Рассмотрим также, что произойдет, если проверка вызывается на экземпляре, который был в будущем когда он создан, но который теперь находится в прошлом. –

ответ

1

Date.parse() ожидает строку, как показанный here. Если вы сохранили :date в формате approprieate вы должны быть в состоянии просто сделать

date < Time.now 
+0

Да, проблема была в формате даты, спасибо! – poctek

Смежные вопросы