2008-11-02 13 views
5

W mojej aplikacji Rails mam trzy modele, Projekty, BlogPosts i obrazy. Projekty i BlogPosts mogą mieć wiele połączonych obrazów, a obraz może być powiązany z Projektem, BlogPostem lub z obydwoma.Rails Associations, habtm? Polimorficzny? Obie?

Jaki jest najlepszy sposób utworzenia powiązań, aby działało to w Railsach?

Odpowiedz

9

Zredagowałbym habtm w oddzielnej klasie modelu, ImageLink. Wtedy otrzymasz:

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

To nie jest naprawdę „dokuczał out” HABTM, bo to naprawdę jest takie samo jak HABTM (z ImageLink jako HABTM stoliku), ale zaletą tej metody jest to, że łączysz dwa habtmy w jeden. –

+2

Dzięki, dodałem has_many: poprzez skojarzenia z tym też, znajdując w procesie, że to nie działa od strony obrazu rzeczy, ale w tym przypadku to nie ma znaczenia, ponieważ chcę tylko obrazy połączone z projektami raczej niż na odwrót. – philnash

Powiązane problemy