¿Cómo puede un controlador configurar manualmente los errores de validación para un campo determinado?

Tengo un formulario con 3 campos ActiveRecord. Uno de esos campos tiene requisitos de validación de tipo ESTADOS UNIDOS y DEPENDIENTES. (Por ejemplo, solo valido el campo si el objeto se está creando en un formulario de asistente de configuración).

En mi controlador POST para crear el objeto, pensé que podía llamar a errors.add para insertar una condición de error 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)

Sin embargo, parece que hacer @ foo.errors.add () en el controlador no hace nada ... no impide que se salve () si los otros campos pasan las validaciones.

Una alternativa es colocar un controlador de validación personalizado en el modelo ... Sé que usar errors.add (: field, 'msg') funciona bien allí ... pero en ese caso, ¿cómo puede mi controlador 'pasar' la información al validador? diciéndole si el campo necesita ser validado o no.

Respuestas a la pregunta(1)

Su respuesta a la pregunta