10

Diese Frage bezieht sich auf die Benennungsart von polymorphen Beziehungen.Polymorphe Beziehungen gut benennen

Meine Datenbank enthält drei Arten von Personen: ein "Unternehmen", einen Kunden und einen Mitarbeiter. Alle drei stehen in polymorphen Beziehungen zu Aufgaben und Ereignissen sowie zu Projekten.

Nach den Rails Guides, würde das so geschehen (ich einige Klassen der Kürze halber weggelassen haben):

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 

Ich glaube, dass die folgenden wäre viel mehr grammatische und elegant sein ... wäre es Arbeit, und wenn ja, gibt es einen Grund, dass offizielle Quellen Wörter wie projectable anstatt Wörter wie owner verwenden?

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

Ich habe den Rails Guide über Assoziationen überprüft und es heißt: 'gehört zu: taskable,: as =>: polymorph 'ist falsch und sollte sein:' gehört zu: taskable,: polymorph => true'. – jdoe

+0

@jdoe - Ich habe den Code korrigiert, um das widerzuspiegeln. Danke für das Kontrollieren. – sscirrus

Antwort

4

Ich persönlich versuche, es so allgemein wie möglich zu halten.

So macht :as => :owner mehr Sinn für mich.

Im Zweifelsfall würde ich nur

:as => :parent 

, die in einigen Projekten habe ich schon gesehen.