то есть.

я есть модель рельсов, которая имеет 7 числовых атрибутов, заполненных пользователем через форму.

Мне нужно проверить наличие каждого из этих атрибутов, который, очевидно, легко использовать

validates :attribute1, :presence => true
validates :attribute2, :presence => true
# and so on through the attributes

Однако мне также нужно запустить специальный валидатор, который принимает ряд атрибутов и выполняет с ними некоторые вычисления. Если результат этих вычислений не находится в определенном диапазоне, тогда модель должна быть объявлена ​​недействительной.

Само по себе это тоже легко

validate :calculations_ok?

def calculations_ok?
  errors[:base] << "Not within required range" unless within_required_range?
end

def within_required_range?
  # check the calculations and return true or false here
end

Однако проблема в том, что метод validate всегда запускается до того, как метод validate. Это означает, что если пользователь оставляет одно из обязательных полей пустым, rails выдает ошибку, когда пытается выполнить вычисление с пустым атрибутом.

Итак, как я могу проверить наличие всех необходимых атрибутов в первую очередь?

Ответы на вопрос(4)

Ваш ответ на вопрос