Sei mesi fa, ho fatto una domanda sulla modellazione dei dati per la mia app, e ho ricevuto qualche consiglio che mi indicava STI (vedi Modello di dati delle rotaie - domanda sulle migliori pratiche per i dettagli).
Ci ho giocato un po ', ho funzionato un po', poi mi sono distratto e ho messo il progetto in pausa.
Ho appena iniziato a svilupparlo di nuovo da zero, con il beneficio di altri 6 mesi di programmazione / esperienza ROR, e ho ancora una volta colpito questo muro quando si tratta di modellare gli ingredienti per le mie ricette di birra.
Per dare un rapido riassunto, supponiamo di avere tre tipi di ingrediente (malto, luppolo e lievito) - ognuno di essi condivide alcuni attributi (nome, prezzo, fornitore) ma ognuno ha anche attributi specifici per quel tipo di ingrediente. Sono tutti correlati (sono tutti gli ingredienti) ma hanno un "comportamento" diverso (per esempio, i chicchi sono purè e ci sarebbe una logica per gestire ciò che non si applicherebbe al luppolo / lievito, ecc ...)
Gli ingredienti sono abbastanza diversi che sto pensando di avere solo tre tavoli separati nel db ... ma che dire dei controller? Posso utilizzare un singolo controller Ingredients per gestire i modelli separati?
Ho letto di alternative a STI (ereditarietà di tabelle di classe e ereditarietà di tabelle multiple) ma tutte le soluzioni sembrano scottanti. Ci sono alternative che mi danno la convenienza di STI (come ottenere tutti gli ingredienti, indipendentemente dal tipo, con una singola query di tabella) senza gli svantaggi (campi nulli, tabelle ingombranti quando continui ad aggiungere sottoclassi e campi, ecc.)
Scusa, so che questa domanda è un po 'confusa, ma mi sento come se non trovassi una soluzione pulita e ora sto cercando di capire quale metodo è il male minore. Sono sicuro che altri lo hanno affrontato, e mi piacerebbe sentire i pro / contro di diverse soluzioni. Grazie!