4
我正在開發熱門擴展。我想要做的是在訂單完成時創建新的數據庫記錄。我需要一些建議如何去做。 我如何理解一種方法是創建自定義方法的順序類,並註冊新的鉤子(我應該在初始化程序中註冊新鉤子?)。 其他方式是使用激活器,但我不知道如何訂閱事件。我應該在哪裏放置訂閱訂單事件的代碼。當Spree訂單完成時,如何調用自定義類方法!執行方法
module Spree
class Credit < ActiveRecord::Base
def create_new_line(order)
#I need call this method when order finalized
end
end
end
我找到了解決辦法。我的訂單裝飾看起來像這樣。
Spree::Order.class_eval do
register_update_hook :add_user_credits
def add_user_credits
if (!self.user.nil? and !self.completed_at.nil?)
# do some stuff, only for registered users and when order complete
end
end
end
看來你的解決方案更好。只是我無法找到如何測試它的方法,因爲如果我打電話給訂購方法敲定!,狀態並沒有改變。我的測試看起來像這樣[鏈接](https://gist.github.com/Dariusp/8936283)。它的作品當我添加hook時,state_machine解決方案在我測試瀏覽器時起作用。 – dpa