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

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top