Domanda sulla modellazione dei dati per Rails
-
22-07-2019 - |
Domanda
Ho le seguenti entità.
- Utente
- Evento
- Expense
- Giudizi
Un utente è qualcuno registrato sul mio sito. Un evento è qualcosa che un utente specifico può creare e quindi invitare persone (altri utenti). Una spesa viene creata da un utente specifico per un evento specifico e può essere associata ad altri utenti / ospiti dell'evento (come l'utente A ha acquistato qualcosa per l'utente B e l'utente C e l'ospite D). Un ospite viene inoltre creato da un utente specifico per un evento specifico, ma una volta creato per l'evento, gli altri utenti associati a quell'evento possono vedere l'ospite. Un ospite non accederà mai realmente al sistema ... è solo un segnaposto per le persone che potrebbero aver partecipato a un evento ma che non sono registrati sul sito.
Sto cercando di avvolgere la mia testa attorno agli attributi has_many
e appartiene_to
di queste entità.
È quasi come nelle mie tabelle di relazione molti-a-molti che ho bisogno di un'altra colonna che identifichi il tipo " di persona (utente o ospite), così posso unirmi correttamente per estrarre nomi, ecc. dalle tabelle degli utenti e degli ospiti di conseguenza.
Ho pensato di creare un flag nella tabella degli utenti che dice se il record è un ospite (e quindi non richiede che tale ospite si registri con il sito, il login, ecc.) ma questo non sembra molto pulito.
Ogni pensiero è molto apprezzato.
Grazie!
Thomas
Soluzione
Mi sembra che tu sia naturalmente incline a quella che viene chiamata un'associazione polimorfica. Potrebbe esserti utile dare un'occhiata a questo Railscast di Ryan Bates: Associazioni polimorfiche
Altri suggerimenti
Sono d'accordo con Gav Polymorphic solo un tavolo di persone con un tipo di colonna e tada
class Person < ActiveRecord:Base
#methods and associations all people have
end
class User < Person
#methods and associations specific to users
end
class Guest < Person
#methods and associations specific to guests
end