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