Attualmente sto scrivendo qualche applicazione web intranet in cui le persone possono inviare richieste di amministratore per l'aggiunta di risorse diverse. L'esempio richieste sarebbero:Alternative all'uso del polimorfismo in Ruby on Rails
- installare programmi, in questo utente caso selezionerà quale programma si vuole installare
- aumento delle quote, in questo utente caso sarà basta inserire la quantità di spazio su disco di cui ha bisogno, o forse lo farà seleziona le quantità predefinite - 1 GB, 10 GB ecc ...
- crea un nuovo alias email, in questo caso l'utente digiterà semplicemente l'alias.
- ...
stavo pensando di avere un solo UserRequests modello con il riferimento al mittente e due attributi opzionali si sarebbe REFERENCE_ID che refefrence ad altre tabelle (per esempio, il Programma che lui vuole installato) e un altro sarebbe utilizzato per campi di tipo libero come alias o quota di posta elettronica.
Quindi il mio problema è che in base al tipo di richiesta il modello dovrebbe contenere alternativamente:
- riferimento ad altra tabella
- dati interi
- dati stringa
Sulla base il tipo di richiesta che deve essere eseguita l'azione specificata - probabilmente l'alias email potrebbe essere aggiunto dai binari ma l'applicazione sul computer degli utenti verrà installata a mano.
Qualcuno ha avuto un problema simile? Pensi che usare il polimorfismo per questo genere di cose sia una buona idea? Hai qualche suggerimento su come organizzare i dati nelle tabelle?
Questo è esattamente quello che stavo cercando e il tuo post ha illuminato la mia mente un po '. Grazie. –
Ian ha ragione, STI è perfetto per la tua richiesta qui. Per un esempio di quando il polimorfismo sarebbe utile in questo caso, sarebbe se tu avessi sia un utente che ha_molte richieste, sia un programma che ha richieste_molte.Quindi potrebbero entrambi avere molte richieste grazie al polimorfismo, e le richieste possono ancora essere STI quanto vogliono – Houen