2012-11-01 19 views
0

我有兩種模式,ProductImageProduct有兩列:namedescriptionImage也具有兩列:path(即,foobar.jpg)和description(用於字幕和alt信息)。大多數圖像描繪多個產品,並且每個產品都有多個圖像。每個產品都有自己的頁面,其中將包含所有相關圖像的圖庫。Rails將圖像與產品關聯的方式?

原本我以爲解決這將是一個HABTM協會的最佳方式 - 但自從讀我已經(在Rails的3路),這些都在贊成has_many :through協會現在皺起了眉頭。但是在這裏創建第三個模型似乎很愚蠢。

我考慮過的另一個解決方案是,在每個產品頁面上,搜索Imagedescription列爲Product:name。但這似乎不是一個優雅的解決方案。

什麼是Rails解決這個問題的方法?

回答

4

使用has_many :through將是rails方式,但底層數據結構仍然可以是相同的。

class Product 
    has_many :product_images 
    has_many :images, :through => :product_images 
end 

class ProductImage 
    belongs_to :product 
    belongs_to :image 
end 

class Image 
    has_many :product_images 
    has_many :products, :through => :product_images 
end 

因此,換句話說,HABTM和has_many :through之間的唯一區別是關係宣言和額外的模型:我會這樣模型中的關係。是的,額外的模型可能看起來像是矯枉過正,但它並沒有減損代碼的可維護性。

相關問題