Ho sentito un paio di volte che mettere la logica di business nei modelli di database è brutto in fondo.
Ho appena leggi questo nel blog di un dipendente di Rackspace: L'ORM Django tendeva anche a farci accumulare grandi quantità di logica aziendale sugli oggetti del modello, il che rendeva ancora più difficile la costruzione di contratti di assistenza efficaci.
Ma mi sembra logico che se si dispone di un modello Invoice
per incapsulare un sacco di logica di fatturazione lì. Sembra molto simile a quello che ci è stato insegnato in OOP. Potresti mostrarmi come questo è sbagliato? Per favore includi un esempio pratico se possibile.
Vantaggio di "mettere la logica nei modelli"
Quello che vedo come un grande vantaggio di mettere la logica nei modelli è che gli utenti dei modelli non devono preoccuparsi di come possono usare le cose, lo usano e funzionano, non possono rompere nulla.
Lasciatemi elaborare un esempio:
Quindi se non inserisci la logica nei modelli, probabilmente hai questo codice altrove, diciamo che è in api
. Se vuoi cambiare uno stato di Invoice
, cosa fai? Esegui invoice.state = new_state
o leggi il codice api
per vedere se esiste un metodo che modifica lo stato?
Questo è confuso e soggetto a errori. Come risolvi questo problema allora?