2011-12-14 50 views
0

我有訂單模型,其中有很多項目:Rails狀態機依賴於關聯的數據?

class Order < ActiveRecord::Base 
    has_many :items 
end 

class Item < ActiveRecord::Base 
    belongs_to :order 
end 

訂單將有一個狀態,而個別項目將有一個狀態,因爲他們得到運輸和另行支付。一旦訂單的所有商品已發貨(其結束狀態),訂單應轉換到其結束狀態(訂單完成)。

我已經閱讀了各個型號的狀態機。它們在這裏適用嗎?我可以讓物品狀態機檢查是否所有的兄弟物品都已發貨,如果有,請更新訂單狀態?會/可能這是一個回調,或更好的觀察員?

我正在Rails 3.1中工作,如果這有所作爲。

謝謝你的幫助。

回答

0

我確實使用state_machine gem來進行非常類似的過程,其中一個項目有很多文檔。

我的項目狀態取決於它的文檔狀態。

當其中一個document達到最終狀態時,state_machine會觸發關聯的project上的方法。此方法負責觸發或不改變state