我迷失在Rails提供的所有关联选项中。
我有Users
的表格。那些Users
有Products
。这只是has_many :products
关系。
但是,我想为用户提供产品列表。他们会选择一些产品并为其增加价格。
基本上,我有
USER 1 -----> PRODUCT 1 ------> PRICE 1 <----.
-----> PRODUCT 2 ------> PRICE 2 |
USER 2 -----> PRODUCT 1 ------> PRICE 3 <----¨
-----> PRODUCT 3 ------> PRICE 4
我应该创建三个表:User
,Product
和Price
吗?
如果用户想要根据数量,需求等更多地定制他/她的产品,该怎么办?那么我应该改为创建以下表格:User
,Product
和ProductDetail
这样,user
has_many :product
和product
has_many :product_detail
。
Rails的做法是什么?
我迷失了所有has_many
,has_one
,has_many :through
等。
答案 0 :(得分: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)
仅供参考:User
,Product
和Purchase
之间的这种关系类似于has_and_belongs_to_many
。使用has_and_belongs_to_many
时,rails只需链接上面的类。我们这样做是为了使用Purchase
和quantity
自定义price
课程。