Quando si applicano i principi DDD in Ruby, sento che il pattern Active Record finisce per inquinare il modello di dominio, mentre non sono sicuro di come implementare la deserializzazione JSON senza interrompere l'incapsulamento.
Il pattern Data Mapper potrebbe essere un'alternativa, ma non ho trovato alcuna implementazione soddisfacente di Ruby che soddisfi i miei requisiti del Database.
L'implementazione abituale di ActiveRecord introduce problemi di persistenza sulle entità di dominio, mentre la separazione delle entità di dominio e delle entità di Active Record crea una gerarchia di classi duplicate, tra le altre complessità aggiuntive.
Con la deserializzazione JSON, o devo consentire a un costruttore e a un setter pubblici vuoti, o devo dare alla classe Aggregate la responsabilità di deserializzare JSON, che non sembra un problema di dominio legittimo, ma più di una preoccupazione per l'infrastruttura . Capisco che questa dovrebbe essere una responsabilità del repository, ma non vedo come implementarlo senza rompere l'incapsulamento della classe aggregata.
Forse l'alternativa sarebbe utilizzare l'Event Sourcing invece di persistere negli stati aggregati, o solo mantenere lo stato aggregato per scopi di lettura. È corretto?