Controlando a ordem das validações de trilhos

Tenho um modelo de trilhos que possui 7 atributos numéricos preenchidos pelo usuário por meio de um formulári

Preciso validar a presença de cada um desses atributos, o que é obviamente fácil usando

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

No entanto, eu também preciso executar um validador personalizado, que utiliza vários atributos e faz alguns cálculos com eles. Se o resultado desses cálculos não estiver dentro de um determinado intervalo, o modelo deverá ser declarado inválid

Sozinho, isso também é fácil

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

No entanto, o problema é que o método "validar" sempre é executado antes que o método "valide". Isso significa que, se o usuário deixar um dos campos obrigatórios em branco, os trilhos lançarão um erro ao tentar fazer um cálculo com um atributo em branc

ntão, como posso verificar primeiro a presença de todos os atributos necessário

questionAnswers(4)

yourAnswerToTheQuestion