我有一个eccomerce应用程序。我有buyers
& sellers
(同桌)。买方has_many :purchases
&卖家has_many :orders
,对吗?但客人买家(未登录)呢?我应该合并“订单”和“购买”表&制作“交易”表?我想得到买家的订单和卖家的购买和购买一些相当复杂。
我不是铁杆或数据库的新手但是 此刻已经烧坏了......有人可以为我打破这个吗? (2岁的风格)
答案 0 :(得分:0)
确定。你需要完全重新考虑这一点。
您应该有一个单独的表格,以便您可以获得更详细的信息。应该有一个表格:
订单 - 带有order_id,订单的时间/日期戳,买家是谁,卖家是谁,付款方式是什么,产品是什么,价格是多少
买家 - 在订单中引用。在这里,您可以找到每位买家的所有相关信息。这样,如果买方是注册用户,则无关紧要,因为会有两个字段:buyer_id和user_id。如果买方不是注册用户......则该字段将为空白。然后,您将获得该买家购买的参考,其余大部分将在订单
中找到卖家 - 卖家当然必须是注册用户。所以你真的可以在Users表中获得这些信息,但出于安全原因,我喜欢将电子商务内容分开。基本上只有user_id作为seller_id的相同信息才是真正必要的。然后是销售清单,销售产品的参考,销售金额,订单参考等等。
产品 - 非常明显。
剩下的由你决定。但这是基础知识。买方,卖方,产品,订单。他们应该都是自己的桌子。
答案 1 :(得分:0)
这可能无法直接回答您的问题,但希望能给您一些想法
模型分发
我们总是尽量保持模型的分布 - 如果您可以将模型拆分为两个单独的模型,请执行此操作
我们的原因是可扩展性 - 扩展较小型号的效率高于尝试将所有内容整合为一个模型;允许你以后做很多不同的事情。公约还规定“数据模型”是 - 特定数据集的模型
对于你,我建议像这样分割你的模型:
#app/models/buyer.rb
Class Buyer < ActiveRecord::Base
has_many :orders, :class_name => 'Order'
end
#app/models/seller.rb
Class Seller < ActiveRecord::Base
has_many :orders, :class_name => 'Order'
end
#app/models/order.rb
Class Order < ActiveRecord::Base
belongs_to :buyer :class_name => 'Buyer'
belongs_to :seller, :class_name => 'Seller'
has_many :order_products, :class_name => 'OrderProduct'
has_many :products, :class_name => 'Product', :through => :order_products
end
这样您就可以拨打@buyer.orders
,其中Order
表格如下所示:
Order Table
id | buyer_id | seller_id | any | extra | columns | created_at | updated_at
如果您有产品表,则可以使用orders
关联为has_many :through
提供许多产品。您可以在此处创建join model
,为您的订单提供所需数量的产品,而不会以任何方式妨碍订单模型
这可能是这样的:
order_products
id | order_id | product_id | delivery_notes | created_at | updated_at