2013-08-19 40 views
2

我是相當新的軌道的世界,我一直在負責製作的在線商店。Ruby on Rails的數據庫關係結構

不過我目前無法設置數據庫關係。我有產品尺寸航運類。產品可以有多個維度,具體取決於客戶選擇的產品類型。產品的尺寸可以決定運輸成本,但每個尺寸也會有多種運輸選項。這裏是我的當前設置:

Product.rb

class Product < ActiveRecord::Base 
    attr_accessible :title, :description, :image_url, :price, :category_id, :weighting, :stock 
    has_many :dimensions 
end 

Dimensions.rb

class Weight < ActiveRecord::Base 
    attr_accessible :product_id, :size, :weight 
    has_and_belongs_to :shippings 
    belongs_to :product 
end 

Shipping.rb

class Shipping < ActiveRecord::Base 
    attr_accessible :description, :insurance, :name, :price, :size_id, :weight_id 
    has_and_belongs_to :dimensions 
end 

任何人都可以給我一些建議,以確定這是否是設置此數據庫關係的最佳方式?如果不是,那麼更好的解決方案是什麼?

我被告知利用has_many:通過,但我不知道如何最好地實現這一點。

感謝

回答

1

通常has_and_belongs_to_manyhas_many :through的決定因素是你是否認爲你永遠需要有關係對象有自己的屬性(會打個has_many :through一起的)。

對我來說,我很少吝嗇這樣的過度使用,所以我總是使用has_many :through,如果我沒有添加屬性,那就這樣吧。它給了我一個有用的協會名稱,我可以驗證該協會,獲得回調等模型...

Ruby on Rails Guide有一個很好的比較兩者之間。

另外,如果你正在做一個RoR的商店,你看着Spree