2008-11-02 19 views
5

En mi aplicación Rails tengo tres modelos, Proyectos, BlogPosts e Imágenes. Los proyectos y los BlogPosts pueden tener muchas imágenes enlazadas y una imagen se puede vincular a un Proyecto, un BlogPost o ambos.Rails Asociaciones, habtm? ¿Polimórfico? ¿Ambos?

¿Cuál es la mejor manera de configurar las asociaciones para hacer que esto funcione en Rails?

Respuesta

9

Me gustaría sacar el hábito en una clase de modelo por separado, ImageLink. A continuación, se obtendría:

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

Esto no es realmente un "objeto de burlas a cabo" HABTM, porque realmente es lo mismo que un HABTM (con ImageLink como el HABTM-tabla), pero la ventaja de este método es que combinas dos habtms en uno. –

+2

Gracias, he añadido has_many: a través de asociaciones a esto también, encontrando en el proceso que eso no funciona desde el lado de la Imagen, pero en este caso eso no importa ya que solo quiero que las Imágenes se vinculen a Proyectos en lugar de que al revés. – philnash

Cuestiones relacionadas