2008-11-02 7 views
5

Dans mon application Rails, j'ai trois modèles, Projets, BlogPosts et Images. Les projets et BlogPosts peuvent avoir plusieurs images liées et une image peut être liée à un projet, à un BlogPost ou aux deux.Rails Associations, habtm? Polymorphe? Tous les deux?

Quelle est la meilleure façon de configurer les associations pour que cela fonctionne dans Rails?

Répondre

9

Je voudrais sortir le habtm dans une classe de modèle séparé, ImageLink. Ensuite, vous obtiendrez:

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

Ce n'est pas vraiment un « taquiné sur » HABTM, parce qu'il est vraiment le même que HABTM (avec ImageLink comme HABTM table), mais l'avantage de cette méthode est que vous combinez deux habtms en un. –

+2

Merci, j'ai ajouté has_many: à travers des associations à cela aussi, trouver dans le processus que ça ne marche pas du côté Image des choses, mais dans ce cas ça n'a pas d'importance car je veux seulement obtenir des Images liées aux Projets plutôt que l'inverse. – philnash

Questions connexes