Ho delle spedizioni e fatture.Rails 3. before_destroy validation per evitare l'eliminazione dei record padre
fattura appartiene alla spedizione
spedizione ha una fattura
Se la spedizione ha una fattura, quindi la spedizione non dovrebbe essere in grado di essere eliminato. Devo configurarlo nei modelli perché sto usando ActiveAdmin.
Quindi ho fatto questo in shipment.rb
has_one :invoice
before_destroy :check_for_invoice
private
def check_for_invoice
unless invoice.nil?
self.errors[:base] << "Cannot delete shipment while its invoice exists."
end
end
Ma ottengo solo un messaggio di giallo con scritto "La spedizione non può essere eliminato", ma è stato di fatto cancellato.
Come si impedisce la cancellazione della spedizione?
Ah è vero! Ho dimenticato di restituire false. Ho anche postato questa parte del codice in modo errato "if invoice.nil?", Si suppone che sia "meno di fattura.nil?". – leonel
Ero curioso della logica, ma ho pensato che potesse essere solo qualcosa di strano. Aggiornerò la mia risposta per renderla compatibile con i posteri. –
Selezionare [questa risposta a una domanda simile] (http://stackoverflow.com/a/10257516/703233) per un modo migliore per farlo. – nitsas