Rails:购买与订单

时间:2013-12-05 05:42:50

标签: sql ruby-on-rails database postgresql relational-database

我有一个eccomerce应用程序。我有buyers& sellers(同桌)。买方has_many :purchases&卖家has_many :orders,对吗?但客人买家(未登录)呢?我应该合并“订单”和“购买”表&制作“交易”表?我想得到买家的订单和卖家的购买和购买一些相当复杂。

我不是铁杆或数据库的新手但是 此刻已经烧坏了......有人可以为我打破这个吗? (2岁的风格)

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

使用has_many :through

扩展订单

如果您有产品表,则可以使用orders关联为has_many :through提供许多产品。您可以在此处创建join model,为您的订单提供所需数量的产品,而不会以任何方式妨碍订单模型

这可能是这样的:

order_products
id | order_id | product_id | delivery_notes | created_at | updated_at