2011-02-25 52 views
0

需要幫助瞭解這一點。Rails3產品組

有產品型號:

class Product 
    :name 
    :short_description 
    :price 
    :cost 
    :visible 
    :new_service 
    :deleted 
    :category_id 
end 

有一個行項目模型。幾乎複製產品型號除外:

class LineItem 
    :order_id 
    :customer_id 
    :company_id 
end 

現在需要弄清楚如何添加一個產品組這將包含多個產品,承載着相同的ATTR的產品型號。通常情況下,我會使用ID做一個連接表,但需要能夠編輯組中每個產品的價格和成本。

難住這一個。

回答

0
class ProductGroup 
    has_many :special_products 
end 

class SpecialProducts 
    belongs_to :product 
    belongs_to :product_group 

    #attributes for overridden prices 
    #delegate other attributes to product 
    delegate :name, :to => :product, :allow_nil => true 
end 

class Product 
    has_many :special_products 
    has_many :product_groups, :through => :special_products 
end 
+0

因此,產品組將具有基本銷售價格,名稱和說明(這是我真正需要的組合)。然後特殊產品將成爲連接表,並具有額外的屬性,我需要騎車,這是價格爲每個產品?即SpecialProducts的模式將類似於:product_id,:product_group_id,:price其中:price是組中的新價格。 – pcasa 2011-02-25 01:07:09

+0

永遠無法讓委託人在我的表單中正常工作。如果您有任何指示,我將不勝感激。謝謝 – pcasa 2011-03-02 13:32:01

+0

我從來沒有真正嘗試過委託方法的表單,但如果這樣做不起作用,你也可以使用嵌套模型來獲取這些字段......尋找'fields_for'表單助手。 – DGM 2011-03-02 14:07:55

0

您的意思是指集團內的每個產品的價格可能與集團以外的正常價格無關(例如,捆綁產品可能會打折扣)?

如果是這樣,這是不是暗示ProductGroup模型和ProductGroupProduct(不寒而慄)模型?

編輯:你可以爲理念也是我大禮包:

https://github.com/spree/spree

0

,我不知道如果我得到它,如果你需要的關係與ProductGroup,爲什麼一組產品不要在ProductGroup模型中使用「:has_many產品」,在產品模型中使用「:belongs_to ProductGroup」。

然後,如果你需要編輯的價格屬於一個特定的ProductGroup你可以做這樣的事情每個產品:

products = ProductGroup.find(2).products 
products.each do |product| 
    product.price = 12.00 
    # More code... 
end 

或類似的東西。

+0

這就是我在開始時的想法,但並不熟悉rails如何通過具有額外屬性的連接表進行關係。即 - 如果產品組由2種產品組成,則產品A的價格可能爲3美元。如果產品組由5種產品組成,則產品A的價格將爲2.50美元。 – pcasa 2011-02-25 00:58:19