【发布时间】:2014-10-03 20:54:34
【问题描述】:
在以下场景中寻找最佳策略。
考虑具有状态的模型 Order 的 Rails 4 在线商店应用程序
class Order
enum status: [ :placed, :processed, :shipped ]
end
我们将应用程序发送给客户,一个月后他们回复我们说想要再添加一个状态 - 延期交货。我们进去更新代码/测试/部署。
class Order
enum status: [ :placed, :processed, :shipped, :backordered ]
end
几个月后,他们又回来了,想要一个状态 - :work_in_progress 。等等
过去,我们通过聚合模型 - 状态 - 这将是一个 STI 模型并包含类似的东西来避免这个问题
OrderStatus < Status
和
CustomerStatus < Status
这使得客户添加状态或更改状态名称是微不足道的,但它会导致较慢的 SQL 查找和繁琐的连接,尤其是在复杂的查询中。
所以我想知道是否有处理这个问题的好策略?现在我们有两个的组合——在我们认为客户不会想要添加/删除状态的模型上——我们保留它枚举,否则我们将属于某种状态/类别模型。
【问题讨论】:
标签: ruby-on-rails ruby activerecord ruby-on-rails-4 enums