在Rails中手动定价产品的模型(未定价 - >估计价格范围 - >确切价格)

时间:2013-04-25 21:52:14

标签: ruby-on-rails ruby-on-rails-3 database-design e-commerce

我正在编写一个电子商务平台(在Rails中),其中产品的成本必须手动定价。基本上,价格有三种可能的状态:

  1. 还没有价格
  2. 价格范围(估计)
  3. 确切的价格(应付)
  4. 此时使用小数字段min_pricemax_priceexact_price建模。
    任何逻辑处理价格都以下列形式结束:

    if exact_price.present?
      # Do something
    elsif min_price.present? && max_price.present?
      # Do something else
    else
      # Fallback
    end
    

    在处理集合时,这变得非常困难,因为有各种可用的定价信息。

    我认为最好放弃exact_price列并根据min_pricemax_price对所有内容进行建模,但这似乎有点凌乱

    还有其他很好的建模方法吗?

1 个答案:

答案 0 :(得分:1)

您可以创建一个封装核心价格逻辑的价格类,并将此类的实例添加到您的模型中

这将允许您:

  • 创建辅助方法,例如display_price
  • 实施比较运算符以允许按价格排序(不要 知道逻辑是什么)
  • 在您决定某些产品可能具有的时候延长 价格来自(没有上限)
  • 创建价格验证(例如确切的价格和最低价格不是 有效)