Я пытаюсь проверить, что, по моему мнению, было бы довольно просто сделать. У меня есть два атрибута 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
Похоже, что мой другой «конец» получил обрезание, теперь оно добавлено для ясности. – NinjaBranDizzle
У меня создалось впечатление, что эти символы взяли в представленном значении и подтвердили их. Как я могу извлечь эти представленные значения и сравнить их в модели? Является ли модель неправильным местом для их сравнения? – NinjaBranDizzle
Когда объект модели создается, эти значения являются методами в этой модели. Если вы сделали 'model = Model.new (foo: bar, bar: foo)', чтобы получить значение foo или bar, это будет 'model.foo' -> bar' model.bar' -> foo. Таким образом, модель является лучшим местом для проверки этого. Каждый раз, когда создается или сохраняется модель, эта проверка будет выполняться. – nzajt