Hai ragione. Comunque è facilmente risolvibile.No, solleva un'eccezione in ogni caso (almeno su Rails 2.3.2).
codice:# invece di find(array) # si può usare all(:conditions => { :id => array })In effetti non avevo mai notato. In genere controllo semplicementeDestoy ritorna l'oggetto freezato nal caso vada a buon fine e nel caso non vada a buon fine non saprei dire, non è documentato, leggendo il codice al volo non l'ho capito e non saprei come farlo fallire...
Questo significa che on failure ritorna nil o un valore che è convertibile in false.codice:if @instance.destroy
Per farlo fallire ci sono alcune possibilità. Una che mi è capitata recentemente è un problema causato dalla presenza di un record invalido in una lista.
Usando acts_as_list, quando tenti di rimuovere un record, lui prima esegue un update impostando a nil il suo valore in lista. Purtroppo questo record era invalido quindi l'update falliva a causa di un errore di validazione, dunque falliva anche il destroy.
L'unico modo era andare di delete_all passando l'ID oppure aggiornarlo prima per renderlo valido.
Purtroppo non ho modo adesso di riprodurre il problema per sapere cosa ritorni. Credo cmq che ritorni nil o false a questo punto.