我有一个订单模型,它有很多项目:
class Order < ActiveRecord::Base
has_many :items
end
class Item < ActiveRecord::Base
belongs_to :order
end
订单将具有状态,并且各个项目将具有状态,因为它们将单独发货和付款。一旦订单的所有项目都已发货(其结束状态),订单应转换到其最终状态(订单完成)。
我已经阅读了各个型号的状态机。它们适用于此吗?我可以为物品制作状态机检查所有兄弟物品是否已发货,如果是,请更新订单状态?是/这可能是回调,还是更好的观察者?
我在Rails 3.1中工作,如果这有所不同。
感谢您的帮助。
答案 0 :(得分:0)
我确实使用state_machine gem来进行一个非常类似的过程,其中一个项目有很多文档。
我的项目状态取决于它的文档状态。
当一个document
达到最终状态时,state_machine
会在关联的project
上触发一个方法。此方法负责触发或不触发state
更改。