Rails状态机依赖于相关数据?

时间:2011-12-14 15:52:56

标签: ruby-on-rails ruby-on-rails-3.1

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

class Order < ActiveRecord::Base
    has_many :items
end

class Item < ActiveRecord::Base
    belongs_to :order
end

订单将具有状态,并且各个项目将具有状态,因为它们将单独发货和付款。一旦订单的所有项目都已发货(其结束状态),订单应转换到其最终状态(订单完成)。

我已经阅读了各个型号的状态机。它们适用于此吗?我可以为物品制作状态机检查所有兄弟物品是否已发货,如果是,请更新订单状态?是/这可能是回调,还是更好的观察者?

我在Rails 3.1中工作,如果这有所不同。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我确实使用state_machine gem来进行一个非常类似的过程,其中一个项目有很多文档。

我的项目状态取决于它的文档状态。

当一个document达到最终状态时,state_machine会在关联的project上触发一个方法。此方法负责触发或不触发state更改。