3

嗨,我的 order_decorator.rb 中有以下代码行

Spree::Order.state_machine.before_transition :to => :delivery,
                                             :do => :valid_geolocation?

Spree::Order.state_machine.after_transition :to => :complete,
                                             :do => :notify_shops_new_order

valid_geolocation?在转换到之前被调用,:deliverynotify_shops_new_order在状态之后不被调用complete

我不知道为什么。我正在使用paypal进行结帐。我不知道这是否可能相关。

4

1 回答 1

2

如果您使用 spree_paypal_express gem,它不会使用自然状态机转换到完整状态,因此不会调用 after complete 回调。过去对我有用的是将您的调用链接到该finalize!方法:

# in order_decorator.rb
def finalize_with_notify_shops!
  finalize_without_notify_shops!
  notify_shops_new_order
end
alias_method_chain :finalize!, :notify_shops
于 2013-08-08T13:05:33.077 回答