Ho qualcosa che mi infastidisce nella comprensione del polimorfismo (vs ruolo):
Nota: sto usando le rotaie (ma è una domanda generale)
Ho 4 modelli :
- utente
- Pro
- Clienti
- Società
Esiste una associazione polimorfica (profilabile) tra Pro / Cliente e Utente [perché Pro ha molti più campi per il processo di registrazione rispetto al Cliente].
L'utente è usato per la sessione (sto usando la devise gem)
In pratica si usa qualcosa di molto simile a questo scritto:
Associazione aziendale
- Ora desidero creare la mia associazione con la Società.
- Ormai solo Pro ha una sola azienda (ma credo che potrebbe essere un altro profileable_type che può anche avere un'azienda).
- Il cliente non ha una società.
In tal caso, quale associazione è preferibile:
Approccio 1
- L'utente ha_una società
- La società appartiene_per utente
- e gestire l'autorizzazione (con una gemma come cancan) per consentire la creazione dell'azienda solo per Pro (con il mio campo profileable_type nella tabella utente)
o
Approccio 2
- Pro ha_una società
- La società appartiene al professionista
- Quindi in tal caso non ho più bisogno di alcuna gestione delle autorizzazioni (l'Utente (e per estensione Cliente) non può creare la società per impostazione predefinita)
Alla ricerca di pro / contro dei 2 approcci. Sono piuttosto sicuro che il primo è la soluzione migliore dato che ho un user_id nella mia tabella aziendale che sarebbe più generico ed espandibile rispetto a un pro_id. Sarei lieto di esserne sicuro. Grazie!