Ho provato molte cose per sovrascrivere il comportamento del metodo: destroy ma niente funziona. Ho usato prima il plugin acts_as_paranoia, ma non funziona con un modello in has_many: attraverso l'associazione.Rails: come sovrascrivere: metodo destroy?
voglio sovrascrivere: metodo destroy solo per fare qualcosa di simile:
def destroy
_run_destroy_callbacks { delete }
end
def delete
self.update_attribute(:status => 0)
freeze
end
Cioè, voglio solo per aggiornare un altro campo (stato a 0) invece di distruggere il record stesso.
Sì, è stata la prima cosa che ho provato. Questo non fa nulla. Posso vedere la richiesta DELETE FROM nei miei log. Il metodo di eliminazione personalizzata sembra non essere chiamato. –
Hrm, in realtà lo uso in diversi modelli in diverse app e funziona senza problemi. C'è qualcosa di 'speciale' con questo particolare modello e stai chiamando cancellare o distruggere? Vorresti il secondo. – miked
Il record viene distrutto dal suo genitore in un AREL (relazione ActiveRecord), forse è il problema?In effetti, aggiorno il mio modello di vino e registro (forma principale, metodo di aggiornamento nel controller), e se scelgo di cancellare il bambino (il modello varietale che contiene la distruzione personalizzata), non viene chiamato apparentemente. Forse, il meccanismo delle rotaie è diverso da distruggere se è il genitore che distrugge il bambino (non chiamare distruggere sul modello figlio?) –