依赖于关联数据的Rails状态机



我有一个订单模型,它有许多项:

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变化。

最新更新