10

Questa domanda riguarda lo stile di denominazione delle relazioni polimorfiche.Denominazione dei rapporti polimorfici bene

Il mio database ha tre tipi di persone: una "Società", un Cliente e un Dipendente. Ciascuno dei tre è in relazioni polimorfiche con compiti ed eventi e progetti.

Secondo le guide Rails, questo sarebbe stato fatto come (ho omesso alcune classi per brevità):

Person.rb 
has_many :tasks, :as => :taskable 
has_many :events, :as => :eventable 
has_many :projects, :as => :projectable # awkward names 

Task.rb 
belongs_to :taskable, :polymorphic => true 

These lead to the rather strange: 
@person = @task.taskable 

sento che il seguente sarebbe di gran lunga più grammaticale ed elegante ... sarebbe lavoro, e se è così, c'è una ragione per cui le fonti ufficiali usano parole come projectable piuttosto che parole come owner?

Person.rb 
has_many :tasks, :as => :owner 
has_many :events, :as => :owner 
has_many :projects, :as => :owner 

Task.rb 
belongs_to :owner, :polymorphic => true 

This creates the elegant: 
@person_1 = @task.owner 
@person_2 = @project.owner 
+1

Ho controllato la guida di Rails sulle associazioni e dice che: 'belongs_to: taskable,: as =>: polymorphic' è errato e dovrebbe essere:' belongs_to: taskable,: polymorphic => true'. – jdoe

+0

@jdoe - Ho corretto il codice per riflettere questo. Grazie per il controllo – sscirrus

risposta

4

Io personalmente cerco di tenerlo il più generico possibile.

Quindi :as => :owner ha più senso per me.

In caso di dubbio, mi basta usare

:as => :parent 

che ho già visto in alcuni progetti.