Como um controlador pode definir manualmente erros de validação para um determinado campo

Eu tenho um formulário com 3 campos ActiveRecord. Um desses campos tem requisitos de validação patéticos e DEPENDENTES. (Por exemplo, só valido o campo se o objeto estiver sendo criado em um formulário do assistente de configuração).

No meu manipulador POST para criar o objeto, pensei que poderia chamar erros.adicionar para inserir uma condição de erro especial

@foo = Foo.new(params[:foo])
if goofy_conditions(params[:foo][:goofy_field])
  @foo.errors.add(:goofy_field, "doesn't meet the goofy conditions" )
end
respond_to do |format|
  if @foo.save
    ...
  else
    ... redirect back to form (with error fields hilited)

No entanto, fazer @ foo.errors.add () no controlador não parece fazer nada ... ele não impede o save () se os outros campos passarem validações.

Uma alternativa é colocar um manipulador de validação personalizado no modelo ... Eu sei que usar o errors.add (: field, 'msg') funciona bem lá ... mas, nesse caso, como o meu controlador pode 'passar' informações para o validador? dizendo se o campo precisa ou não ser validado.

questionAnswers(1)

yourAnswerToTheQuestion