2013-08-03 72 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玩得开心。 –