validate :updatable? # First validation there is
with_options :if => Proc.new { |object| object.errors.empty? } do |updatable|
updatable.with_options :if => "self.current_step == basic" do |step|
validates .... bla-bla bla
Quindi, prima di ogni convalide sono fatti, la subroutine aggiornabile si chiama e popola l'array errors[:base]
con errori appropriati, il che significa che oggetto non è aggiornabile. E volevo che saltasse il resto delle convalide se sono stati trovati errori in questa subroutine, ma l'esempio sopra riportato è non funzionante - esegue tutte le convalide.Rails with_option annidati: se usato in validazione
Ma, se cambio :if => "self.current_step == basic"
a :if => "self.errors.empty? && self.current_step == basic"
funziona come un fascino.
Cosa sto facendo male? Gli esempi mostrano che l'operazione nidificata with_option
dovrebbe funzionare.
Qualcuno può aiutarmi? Grazie in anticipo.
Mi sembra che sia un bug, perché le condizioni non vengono unite, quindi solo l'ultima è coinvolta. Spero che qualcuno presterà attenzione a questo e verrà risolto nelle versioni future. – Dmitri