我有一个订单模型,它有许多项:
class Order < ActiveRecord::Base
has_many :items
end
class Item < ActiveRecord::Base
belongs_to :order
end
订单将有一个状态,单独的项目将有一个状态,因为它们是单独运输和支付的。一旦订单的所有项目都已发送(它们的最终状态),该订单应转换到其最终状态(订单完成)。
我已经阅读了各个模型的状态机。它们适用于这里吗?我是否可以为物品创建一个状态机,检查它们的所有兄弟物品是否已发货,如果是,则更新订单状态?这将/可能是一个回调,或者更好的观察者?
我在Rails 3.1中工作,如果这有区别的话。
谢谢你的帮助。
我确实在一个非常类似的过程中使用了state_machine gem,其中一个项目有许多文档。
我有项目的状态取决于它的文档的状态。
当一个document
达到最终状态时,state_machine
触发关联的project
上的一个方法。该方法负责触发或不触发state
变化。