Sono bloccato in un problema di progettazione strano,Tavolo unico eredità e dove usarlo in Rails
Sto lavorando su due tipi di profili Models,
- Profilo utente (appartiene a utente)
- altri che sono mantenere in loco come "bot" (non appartiene a nessuno)
Il comportamento OO tipico di questi due tipi di profili è stessa ma solo le importanti attributi/proprietà sono comuni (i più importanti 5-6 in numero), altre proprietà come "interessi ecc." (quasi 10-15 proprietà) non sono disponibili per i profili bot
Il codificatore che ha lavorato a questa versione precedente ha creato modelli/controllori separati per profili bot/Profili utente che creano una grande ridondanza ovunque e anche come ci si aspetta che sia difficile da mantenere, scrivere test, ecc. Ho voluto ASCIUGARLA, almeno per risolvere alcuni/tutti questi problemi di ridondanza.
Qualcuno ha suggerito l'ereditarietà singola tabella come soluzione
Qualcuno ha suggerito Utilizzare Associazioni polimorfiche, invece.
qual è l'approccio migliore. Quando usiamo effettivamente STI?
Il mio pensiero è che STI viene utilizzato al meglio quando gli attributi sono uguali per i modelli e differiscono nel comportamento.
Pensieri su cosa posso fare?
Ho intenzione di sperimentare con STI, penso. Ma quali sono i problemi che potrei affrontare se ho solo alcuni attributi comuni? –
Un altro modo per gestire i controller è di sottoclassi, come i modelli ... refactoring per rendere condivisibili i metodi comuni tra loro. –
@Andrew: IME, che non funziona quasi altrettanto bene come la sottoclasse per i modelli, tranne nel caso CRUD (relativamente raro) di scaffold per bare bare. – womble