Ho un modulo con 3 campi ActiveRecord. Uno di questi campi ha una sorta di stupido, e requisiti di convalida STATE-DEPENDENT. (Ad esempio, convalido il campo solo se l'oggetto viene creato su un modulo di installazione guidata.)come può un controller impostare manualmente gli errori di convalida per un determinato campo
Nel mio gestore POST per creare l'oggetto, ho pensato di poter chiamare errors.add per inserire una condizione di errore speciale
@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)
Tuttavia, fare @ foo.errors.add() nel controller non sembra fare nulla ... non impedisce il save() se gli altri campi passano le convalide.
Un'alternativa è mettere un gestore di convalida personalizzato nel modello ... So che usare errors.add (: field, 'msg') funziona bene lì ... ma in tal caso come può il mio controller 'passare' informazioni al validatore che indicano se il campo deve essere convalidato o meno.
mettere un attrbute nonpersisted sul modello, dire guidata, impostare come appropriato e quindi basta usarlo in validazione nrmal? –