Rails建模帮助,关联和逻辑

时间:2016-01-21 15:56:40

标签: ruby-on-rails ruby ruby-on-rails-4

我是一名初级开发人员,刚刚参加了第一个铁轨项目。我面临许多障碍,但从中学到了很多。到目前为止,我能够找出Devise中的多个用户以及所有好东西。但对授权半信心十足。我仍然在学习,并且相信我会明白这一点。

但我过去一周唯一的砖墙时刻是为我的应用程序建模订购部分。以下是我正在处理的应用程序的一些摘要:

  1. 其B2B
  2. 用户类型是零售商和供应商
  3. 零售商向供应商下订单
  4. 只有一种产品有3种不同类型或更多,product_type1,product_type2,product_type3
  5. 供应商每天更新产品类型的价格,零售商在其信息中心中查看当前价格
  6. 供应商还为每个零售商的每个产品价格制定公式。
  7. 例如,他的基本价格+保证金,他的保证金对每个零售商来说都是不同的。

    那么我该如何建模呢?我希望零售商以各自的价格向供应商下订单。

    我需要什么?

    产品型号?价格和类型?

    单独的公式模型?

1 个答案:

答案 0 :(得分:2)

我理解你的感受,因为我以前遇到过这个问题,让我分享一下我的所作所为,希望它有助于解决你的问题:

User型号:

class User < ActiveRecord::Base
  # A user is a registered person in our system
  # Maybe he has 1/many retailers or suppliers
  has_many :retailers
  has_many :suppliers
end

Order型号:

class Order < ActiveRecord::Base
  # An order was placed for supplier by retailer
  belongs_to :retailer
  belongs_to :supplier
  # An order may have so many products, we use product_capture
  # because the product price will be changed frequently
  # product_capture is the product with captured price
  # at the moment an order was placed
  has_many :product_captures
end

Product型号:

class Product < ActiveRecord::Base
  belongs_to :retailer
  has_many :product_captures
  # Custom type for the product which is not in type 1, 2, 3
  enum types: [:type_1, :type_2, :type_3, :custom]
end

ProductCapture型号:

class ProductCapture < ActiveRecord::Base
  belongs_to :product
  attr_accessible :base_price, :margin

  def price
    price + margin
  end
end

....other models

所以这个想法是:

  1. 用户可能有许多零售商或供应商(验证要求,我不确定这是否正确)
  2. 我们总是为零售商和供应商订购产品的最新产品,确保最新价格适用
  3. 当零售商更新其价格(基价+保证金)时,我们会创建一个新的ProductCapture,这将成为最新的,所有旧的捕获仍然在数据库中,因为旧订单仍在使用它。