2013-08-03 73 views
1

我迷失在Rails提供的所有關聯選項中。Rails與自定義字段的關聯

我有一張表Users。那些UsersProducts。這只是一個has_many :products的關係。

但是,我想爲用戶提供產品列表。他們會選擇一些產品,並會增加一個價格。

所以基本上,我有

USER 1 -----> PRODUCT 1 ------> PRICE 1 <----. 
     -----> PRODUCT 2 ------> PRICE 2   | 
USER 2 -----> PRODUCT 1 ------> PRICE 3 <----¨ 
     -----> PRODUCT 3 ------> PRICE 4 

我應該創建三個表:UserProductPrice

如果用戶想要定製他/她的產品更多的數量,需求等,該怎麼辦?然後,我應該創建下列表格代替:UserProductProductDetail

這樣,userhas_many :productproducthas_many :product_detail

什麼是Rails這樣做的方式?

我失去了所有的has_manyhas_onehas_many :through

回答

1

我會創建以下文件:

class User 
    has_many :purchases 
end 

class Product 
    has_many :purchases 
end 

class Purchase 
    belongs_to :user 
    belongs_to :product 

    # mongoid syntax, if using ActiveRecord, use a migration 
    field :quantity, type: Integer, default: 0 
    field :price, type: Float, default: 0.0 
end 

user = User.new 
apple = Product.new 
tea = Product.new 
chocolate = Product.new 

user.purchases.build(product: apple, price: 2.99, quantity: 1) 
user.purchases.build(product: tea, price: 5.99, quantity: 2) 
user.purchases.build(product: chocolate, price: 3.99, quantity: 3) 

FYI:這種UserProductPurchase關係類似於一個has_and_belongs_to_many。當使用has_and_belongs_to_many時,ra​​ils只是簡單地鏈接上面的類。在這裏,我們正在自己做,以便使用quantityprice定製Purchase類。

+0

謝謝你的詳細解答。這似乎相當簡單的實施。 –

+1

很高興幫助你,請考慮接受答案。與Rails玩得開心。 –