L'uso tipico di AR viola questi principi. Molti sviluppatori scaricano ogni possibile funzionalità nei loro modelli rendendoli grassi e ingombranti. Il fatto che AR renda le interazioni con i database un aiuto a posteriori nell'abuso.
Quello che potresti fare è utilizzare il modello di repository.
Utilizzalo per separare il codice di persistenza dei dati dalla logica aziendale, nascondendo in questo modo i dettagli di AR. Quindi separa i casi d'uso in singole classi di responsabilità. Recentemente questo è stato soprannominato DCI e sta iniziando a guadagnare un po ' trazione. Ciò manterrà i tuoi modelli superleggeri e i casi d'uso diverranno più chiaramente articolati nelle classi reali. Imparare a utilizzare DCI richiede un po 'di pratica, ma ci sono un numero crescente di risorse là fuori e davvero, una volta che si strappa il concetto, non dovresti avere molti problemi ad usarlo. (Non preoccuparti se commetti alcuni errori iniziali.)
Prendendo questa virata non saresti strettamente legato ad AR. È possibile creare facilmente interfacce che utilizzano il filesystem o qualsiasi tipo di persistenza. Rendendo il tuo livello di persistenza più di un ripensamento, avrai migliorato drasticamente la tua architettura.