2008-11-02 7 views
5

In meiner Rails App habe ich drei Modelle, Projekte, BlogPosts und Bilder. Projekte und BlogPosts können viele verknüpfte Bilder enthalten und ein Bild kann mit einem Projekt, einem BlogPost oder beiden verknüpft werden.Schienenverbände, hattm? Polymorph? Beide?

Wie können die Verknüpfungen am besten eingerichtet werden, damit dies in Rails funktioniert?

Antwort

9

Ich würde die hattm in eine separate Modellklasse, ImageLink herausholen. Dann würden Sie erhalten:

Project 
    has_many :image_links, :as => :resource 
BlogPost 
    has_many :image_links, :as => :resource 
ImageLink 
    belongs_to :image 
    belongs_to :resource, :polymorphic => true 
Image: 
    has_many :image_links 
+2

Das ist nicht wirklich ein „neckte out“ HABTM, weil es wirklich das gleiche wie ein HABTM ist (mit Imagelink als HABTM-Tabelle), aber der Vorteil dieses Verfahrens besteht darin, dass du kombinierst zwei hachtms zu einem. –

+2

Danke, ich habe has_many: durch Assoziationen dazu auch gefunden, in dem Prozess, dass das nicht von der Bildseite der Dinge funktioniert, aber in diesem Fall spielt das keine Rolle, da ich Bilder nur mit Projekten verknüpfen möchte als umgekehrt. – philnash

Verwandte Themen