2015-09-21 4 views
0

Я пытаюсь проверить, что, по моему мнению, было бы довольно просто сделать. У меня есть два атрибута time_select «start_time» и «end_time». Я просто пытаюсь проверить в контроллере, будет ли конечное время, введенное пользователем, равным времени начала или до времени начала. Нет никаких дат. У меня есть метод проверки ниже, но он всегда ошибки независимо от того, что вводится пользователем.Проверка атрибутов начала и конца времени

Довольно новый для рельсов и не может не чувствовать, что им не хватает чего-то маленького. Эта проверка должна работать, не так ли?

class Casenote < ActiveRecord::Base 
validate :end_must_be_after_start 

belongs_to :servicelog 
default_scope { order(:id) } 


private 

def end_must_be_after_start 
    if :start_time >= :end_time 
    errors.add(:end_time, "must be after start time") 
    end 
end 

end 

ответ

1

Вы сравниваете два символа :start_time и :end_time. Вам нужно сравнить два атрибута start_time и end_time.

def end_must_be_after_start 
    if start_time >= end_time 
    errors.add(:end_time, "must be after start time") 
    end 
end 
+0

Похоже, что мой другой «конец» получил обрезание, теперь оно добавлено для ясности. – NinjaBranDizzle

+0

У меня создалось впечатление, что эти символы взяли в представленном значении и подтвердили их. Как я могу извлечь эти представленные значения и сравнить их в модели? Является ли модель неправильным местом для их сравнения? – NinjaBranDizzle

+0

Когда объект модели создается, эти значения являются методами в этой модели. Если вы сделали 'model = Model.new (foo: bar, bar: foo)', чтобы получить значение foo или bar, это будет 'model.foo' -> bar' model.bar' -> foo. Таким образом, модель является лучшим местом для проверки этого. Каждый раз, когда создается или сохраняется модель, эта проверка будет выполняться. – nzajt

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

  • Нет связанных вопросов^_^